真的这么怪?

awjx 2005-01-10 12:14:48
我做了一个类QQ,两端的通信都经过服务器转发.

在局域网绝对没问题,测试半年了.保证没问题,非常稳定.
但如果服务器绑定到公网IP,两端在不同的局域网内通过服务器转发数据时就有一点错误.

现像是这样的:

出错位置:
1 socket.Receive(HeadData,0,4,SocketFlags.None);
2 int len = BitConverter.ToInt32(HeadData,0);
3 byte [] buffer = new byte[len];
4 socket.Receive(buffer ,0.buffer .Length,SocketFlags.None);
....

执行完第1行没问题,但执行到第4行后面时就抛出异常,
而异常指的却是第1行出错"远程主机强迫关闭了一个现有的连接".
远程并没有关闭,就算关闭了,也不可能是第一行出错吧?因为第一行已正确读取了长度,第4行也正确接收数据了.

更奇怪的是,与远程的连接并没的断,通信能正常进行.
但不知什么时候就掉线了.


怪得很,我都不知怎么描述.
代码太长,实在没办法帖.


大家帮帮我吧,这是第三天了.烦啊!
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
awjx 2005-01-10
  • 打赏
  • 举报
回复
哦,这段代码是服务器端的.
提示是客户端关闭连接了.
sharkhuang 2005-01-10
  • 打赏
  • 举报
回复
强迫关闭?是不是服务器出问题了?
awjx 2005-01-10
  • 打赏
  • 举报
回复
那4行代码的思路对吗?
先接收长度,然后通过该长度再接收数据体.
这样有问题吗?
oyljerry 2005-01-10
  • 打赏
  • 举报
回复
有没有可能防火墙的原因?
xuzheng318 2005-01-10
  • 打赏
  • 举报
回复
偶只用过c++
awjx 2005-01-10
  • 打赏
  • 举报
回复
HunterForPig(留着口水的猪)

你用C#写过通信程序吗?
HunterForPig 2005-01-10
  • 打赏
  • 举报
回复
贴上代码才好说

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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