免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: bierdaci
打印 上一主题 下一主题

共享一下我的代理服务器源码 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-04-16 17:30 |只看该作者
原帖由 xxldc 于 2008-4-15 17:04 发表

static int long_connect_cb(int udp_fd, struct sockaddr_in *addr, void *data)
{
        struct sockaddr_in *seraddr = (struct sockaddr_in *)data;

        LOG_MSG(3, 0, "start long connect";
        seraddr->sin_addr = addr->sin_addr;//我就不明白,addr赋值给data,函数参数之间赋值,那为什么还要传两个参数进来,addr和data合并成一个参数不行嘛?
        if (start_transmit(seraddr, &transmit_addr, long_connect_handler) < 0) {//transmit_addr还是个全局变量,怎么不用个锁保护一下呢?你这个是多线程呢
                LOG_MSG(0, 0, "long connect server failed";
                return -1;
        }

        return 0;
}

代码一句注释都没有,真是读死我了.怪不得你们公司不要你


实在佩服啊兄弟,少有人能静下心来看别人的代码,赞一个先,另外你的批评偶接受,以后再发上来的代码一定记着加注释

一、至于为啥没有合并一个参数,因为两个参数方便嘛,要不然我就得在外面把服务器传过来的数据和addr合一块儿了,你说麻烦吧
二、这个嘛其实是不用加锁的,因为这是客户端,transmit_addr只有一个,而且是不变的,另外呢还有一点,其实线程还没开始呢^_^

另外这个程序实在是没有精心雕琢,基本上是写完了调试着差不多能运行了就发上来了,真要的用的话肯定还有很多问题,不过怎么说也算是自己的一个作品吧,发上来给大家瞅瞅玩玩,有问题大家多指正,小弟一定虚心学习^_^

[ 本帖最后由 bierdaci 于 2008-4-16 17:49 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2008-04-16 17:38 |只看该作者
其实,我觉得,做一个客户端,似乎比做一个服务器端需要准备的知识要多

比如,Windows下如何截获当前某个特定程序或者进程与某个特定服务器(或端口,反正符合某一特征)的通信内容,进行重新打包等工作,我至今没有想明白该怎么做

当然,我对系统了解不多,由很大关系


PS:Linux下我也没做到

论坛徽章:
0
23 [报告]
发表于 2008-04-16 17:47 |只看该作者
原帖由 net_robber 于 2008-4-16 17:38 发表
其实,我觉得,做一个客户端,似乎比做一个服务器端需要准备的知识要多

比如,Windows下如何截获当前某个特定程序或者进程与某个特定服务器(或端口,反正符合某一特征)的通信内容,进行重新打包等工作,我 ...


没大明白你的问题,你的意思是不是如何在一个进程里截获另一个进程的网络数据?如果这个问题的话,可以在链路层截获,然后分析协议,但这样的话每个系统的链路层都不一样,而且比较麻烦,另外我记得原始套接口不能截获TCP或UDP协议数据的,如果原始套接口可以截获就方便多了

不知道我回答的是不是你要问的问题,其实我网络比较菜了,找大牛帮你解释一下吧

论坛徽章:
0
24 [报告]
发表于 2008-04-17 09:53 |只看该作者
原帖由 bierdaci 于 2008-4-16 17:47 发表


没大明白你的问题,你的意思是不是如何在一个进程里截获另一个进程的网络数据?如果这个问题的话,可以在链路层截获,然后分析协议,但这样的话每个系统的链路层都不一样,而且比较麻烦,另外我记得原始套接 ...


Linux and windows2000:
socket( PF_INET, SOCK_RAW, IPPROTO_TCP )

论坛徽章:
0
25 [报告]
发表于 2010-02-28 00:40 |只看该作者
haha

论坛徽章:
0
26 [报告]
发表于 2010-02-28 12:06 |只看该作者
回复 22# net_robber

写浏览器的 和写web server的,不是一个级别的。。

你的意思,是截获,还只是获取。截获的意思是,你获取了,上层应用就获取不到了,由你负责先处理。
如果是截获的话,必须涉及net_filter吧,如果仅仅死获取,则用pcap,也比较方便。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP