锁定老帖子 主题:信p2p者,得永生(一)
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-11
开篇 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-08-12
客户端处于内网怎么办?另外的人是不能直接连接处于内网的服务器的,这个时候,我觉得可以使用UDP穿透内网。
也就是说客户端向中心服务器注册,中心服务器此时就知道了当前客户端所打开的UDP端口,这个端口是别人客户端也可以访问的。就像QQ传文件有时候用UDP,有时候用TCP一样,如果是外网,那TCP当然最好了,如果是内网,就只能用这种先注册,然后再使用的UDP的方式。 所以中心服务器要记的不仅仅是每个客户端的IP地址,还记录他们是处于外网还是内网,如果是内网的话,还要记录每个客户端所打开的UDP的映射端口。这样这个客户端才有可能成为一个服务器,让别人来访问。 |
|
返回顶楼 | |
发表时间:2009-08-12
java.lang.Object 写道 客户端处于内网怎么办?另外的人是不能直接连接处于内网的服务器的,这个时候,我觉得可以使用UDP穿透内网。 也就是说客户端向中心服务器注册,中心服务器此时就知道了当前客户端所打开的UDP端口,这个端口是别人客户端也可以访问的。就像QQ传文件有时候用UDP,有时候用TCP一样,如果是外网,那TCP当然最好了,如果是内网,就只能用这种先注册,然后再使用的UDP的方式。 所以中心服务器要记的不仅仅是每个客户端的IP地址,还记录他们是处于外网还是内网,如果是内网的话,还要记录每个客户端所打开的UDP的映射端口。这样这个客户端才有可能成为一个服务器,让别人来访问。 恩,是的,上网找到一个python使用udp穿透的例子,先研究研究。 中心服务器需要记录的内容还是挺多的,我现在不太明白的是btcomet是怎么做的,其实酷狗的做法应该也是类似的。 |
|
返回顶楼 | |
发表时间:2009-08-12
你有兴趣做类似的东西么,有兴趣的话,叫上我哦。
|
|
返回顶楼 | |
发表时间:2009-08-12
前年做过一个类似飞鸽的东西,在局域网用来传文件的,不需要登录,只要启动以后,就会自动加入一个组播组,用组播实现局域网内的互相通知。然后基于UDP来发送消息。基于TCP来收发文件,也做了一个基于UDP的发送文件功能。由于UDP是不可靠的,重新组装包的顺序以及请求重发包的逻辑搞了挺久的。
当时想做一个UDP注册到中心服务器上,然后就可以全网UDP和TCP都能传文件了,但是当时没有外网的服务器一直都没有做成。 |
|
返回顶楼 | |
发表时间:2009-08-12
最后修改:2009-08-12
java.lang.Object 写道 前年做过一个类似飞鸽的东西,在局域网用来传文件的,不需要登录,只要启动以后,就会自动加入一个组播组,用组播实现局域网内的互相通知。然后基于UDP来发送消息。基于TCP来收发文件,也做了一个基于UDP的发送文件功能。由于UDP是不可靠的,重新组装包的顺序以及请求重发包的逻辑搞了挺久的。
当时想做一个UDP注册到中心服务器上,然后就可以全网UDP和TCP都能传文件了,但是当时没有外网的服务器一直都没有做成。 这个东西我也做过,这个主要是多播,然后就是tcp发文件。我用python写的,当时还是命令行的方式搞的。 附上之前找到的python做利用stunb做udp的穿透的代码 |
|
返回顶楼 | |
发表时间:2009-08-13
最后修改:2009-08-15
内网用UDP穿透也有局限,用 ISA200x 做内网出口的一般都只开放了HTTP的80端口和HTTPS的443端口,对于这样的环境UDP就无能为力了。
用 Python 的话 ntlmaps 可以做 NTLM 的代理。 或者在代码里面视具体的网络情况选择一种合适的代理方式了。 java.lang.Object 写道 客户端处于内网怎么办?另外的人是不能直接连接处于内网的服务器的,这个时候,我觉得可以使用UDP穿透内网。
也就是说客户端向中心服务器注册,中心服务器此时就知道了当前客户端所打开的UDP端口,这个端口是别人客户端也可以访问的。就像QQ传文件有时候用UDP,有时候用TCP一样,如果是外网,那TCP当然最好了,如果是内网,就只能用这种先注册,然后再使用的UDP的方式。 所以中心服务器要记的不仅仅是每个客户端的IP地址,还记录他们是处于外网还是内网,如果是内网的话,还要记录每个客户端所打开的UDP的映射端口。这样这个客户端才有可能成为一个服务器,让别人来访问。 |
|
返回顶楼 | |
发表时间:2009-09-11
我信了阿,为何没有原地复活?
拿到电驴的源码,没有时间看。 以前做过一个p2p的电子杂志下载软件,感觉还可以。 |
|
返回顶楼 | |
发表时间:2009-09-11
在不同的网段之间通讯是比较难的,可以用UDP在路由器上打洞。
如果对效率没有特别要求,可以用webservice,RMI, 或者基于http协议作底层协议,可以穿越防火墙,而且实现起来简单很多。。。 |
|
返回顶楼 | |
发表时间:2009-09-11
dijikstra,应该怀念一下他。
|
|
返回顶楼 | |