请教关于UDP打洞的题,成功通信的请进,顶者有分(调了很久,大家帮忙)

guyan033 2006-01-24 11:26:03
(1)客户A登录服务器 ,服务器向A返回所有的以登录用户列表(其中包含A)。
A同时用线程开始向服务器发送心跳包.每发送一次Sleep(200)

(2)客户B登录服务器,服务器向B返回所有的以登录用户列表(其中包含 A,B 用户)
B同时用线程开始向服务器发送心跳包.每发送一次Sleep(6000)


(3)B要与A通迅,向服务器发出A用户的相关信息,服务收到B的信息后根据其内容向A发送信息(此信息内容包含B的IP和端口号)
B同时用线程开始向A发送信息.每发送一次Sleep(200)


(4) A发到服务器发送的信息后根据其内容给循环向B发送信息每发一次Sleep(200)(打洞)

现在的问题是:
1 A接收B的信息错误,错误码为10054(远程主机强迫关闭一个连接);
2 B接收A的信息错误,错误码为10054(远程主机强迫关闭一个连接);
3 ***最重要的是想知道,在什么情况下A和B才能正常通信,出现10054错误是不是说明某个端口号
以过期? (可是以经发送了心跳包)
4. A 和 B 都向对方发信息应该在某一时间上同时到达,为什么这样也不通呢?
测试环境:
1. 服务器为一台 公网主机
2. 客户机为 同一局域网的两台机器 ,ADSL上网
如:一台IP为 192.168.1.115 一台为 192.168.1.118


...全文
253 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
athossmth 2006-02-01
  • 打赏
  • 举报
回复
fangsang 弓虽
ChrisAK 2006-01-26
  • 打赏
  • 举报
回复
up
Eddie005 2006-01-24
  • 打赏
  • 举报
回复
顶者有分那就顶吧~~
yiyong0418 2006-01-24
  • 打赏
  • 举报
回复
这个问题我刚解决的
我来帮你解决吧,你可以加我 qq : 24446111
或给我发邮件:fx365@163.com
pLocker 2006-01-24
  • 打赏
  • 举报
回复
我也顶~!
fangsang 2006-01-24
  • 打赏
  • 举报
回复
1.心跳时间的选择,不要超过30秒,
2.发送顺序:
a.A登陆服务器,
b.B登陆服务器
c.服务器告诉A和B的对方端口和IP信息
d.A发数据报给服务器,要求服务器命令B发消息给A.同时A还发一个数据包给B
e.B收到服务器命令后发数据包给A.
f.B收到A发出的数据报,连接成功
在步骤d中,A发给B消息包后可能收到10054,因为NAT不能把A的数据报转给B
3.你为什么出错,
如果你按上面步骤做还不成功,
a.应为网络的NAT类型时cone NAT
b.都在同个局域网里边,(楼上是这种情况)
c.XXXXXXXXXXXXXXX

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧