python 点对点穿透内网_java穿透内网实现点对点通信的思考

1,客户端A登陆的时候,发送一个UDP数据包给服务器,然后服务器根据该包获得客户端A的IP和端口并保存到UdpAddressMap(用登录名作为key保存)中。

2,客户端A执行操作的时候,发送一个消息,带上目标客户端B的登陆名。

3,服务器端获得消息后,将客户端B的端口发送给客户端B,然后B使用该端口建立UDP监听。

4,客户端B再发送一条信息给服务器,告诉它监听已经建立,服务器将B的IP和PORT发送给客户端A。

5,客户端A获得信息后根据获得的客户端B的IP和PORT,绕过服务器,直接往客户端B发送数据。

-----------------------------------------------------------Q—Q群聊天------------------------------------------------------

老孔()  10:29:49

a,b 登录后都把ip和port注册到服务器上,a向b发消息,先调用服务器接口,这个接口把b的ip和port返回给a,然后把a的ip和port给b,a和b同时连接对方即可

老孔()  10:31:12

要注意的是国内网络有点问题,就是同一个机器在 www.ip138.com

和  www.cz88.net

上获取的ip不同,这样你的客户端程序接收到打洞的请求时,不能根据服务器回给你的客户的ip了,要根据实际的判断

老孔()  10:31:18

我们遇到这个问题的

┎.le!┎. ()  10:31:33

哦 我想想

老孔()  10:32:10

你做做就知道了

┎.le!┎. ()  10:32:40

你说的同时连接对方是指两个客户端都是即有UDP客户端又有UDP服务端吗?  而不是一个作为服务端 一个作为客户端?

老孔()  10:32:59

udp发送和接收是一个端口来的

老孔()  10:33:23

互相先发打洞的信令,通了在传业务信息

------------------------------------------------------------------------------------------------------------------------

改良后的思路

1,客户端A登陆的时候,发送一个UDP数据包给服务器,然后服务器根据该包获得客户端A的IP和PORT并保存到UdpAddressMap(用登录名作为key保存)中。

2,客户端A要执行数据传送的时候,发送一个信息给服务器,带上目标客户端B的登陆名。

3,服务器将A的IP和PORT发给客户端B,同时将B的IP和PORT发给客户端A。

4,客户端A打开监听并向客户端B发送打洞信息,直到收到客户端B的回应信息停止打洞,开始正常传送信息。客户端B也是如此。

5,当用户退出的时候从UdpAddressMap去除该用户的IP和PORT信息。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-03-18 17:19

浏览 5652

评论

1 楼

wwenr

2011-02-27

您好 我是一名在校学生 正在做一个关于即时聊天的毕设 碰到了一些问题 能不能请教您一下~~

我的QQ:53595177

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值