p2p实现的疑惑。请大家指教,谢谢!
yplin 2004-11-02 03:40:06 最近在写一个P2P的软件,使用的NMUDP,并参考了网上一些文章,文章的大意如下:
1、处于不通局域网内的机器A和B,为了实现P2P通信,A,B首先都登录某一服务器S,服务器S记录他们登录的IP和PORT,并把这些信息返回给A,B。
2、如果此时A想与B进行P2P通信,A首先向服务器发消息:A想与B连接,请转告B。然后A开始向B登录S的IP和PORT持续发送一个要求连接的消息:我想和你连接。
3、与此同时,服务器S转告B:A想与你建立连接。B收到S中转的消息后,开始向A登录S的IP和PORT持续发送消息:我同意你和我建立连接。
4、如果在A,B双方持续发送要求连接的过程中,A收到B的消息,B也收到了A的消息,那么此次连接成功,A和B开始进行P2P的通信。
文章中提到,A->B,B->A发消息时,使用的 目标地址 都是对方登录服务器S时的地址,并且A、B
在互相发送请求连接的过程中,A发出消息到B时的端口仍是A登录服务器S时的端口(例如都是10000),B也同样如此(例如都是20000)。但在实践过程中确发现,A在向B发请求时,A的端口更改了!不再是10000,而是向上加了1,或是更多( 例如是10005),而此时B却并不知道A给它发出请求的端口是多少,B发到A原地址(例如201.22.22.22:10000)的数据就被代理服务器过滤掉了,因为B的数据是不请自来的!!A发到B的数据也是同样下场。这正是我无法解决的问题。
请大家指教。谢谢!!!!!!!!