TCP编程 出现套接字操作出现一个无法连接的主机

ylfleo820 2017-06-10 02:53:37
问题描述:公司开发了一套ERP系统,公司希望系统能按用户收费,于是就用socket写了一个服务程序,统计用户登录的用户数。程序写出来运行没什么大问题,客户端从XP到win7和win10都能正常使用和统计,系统在客户端数量达到50个都没有出什么问题。服务器端也稳定,服务器用的是window server 2008 R2,服务器端开的端口是21588。用户在使用过程中总体来说基本没什么问题出现,表现都正常,其不正常是出现在当用户长时间不动电脑把电脑锁定后,ERP系统是开着的时候,这时ERP就会弹出这个错误:套节字操作偿试一个无法连接的主机。这种情况多出现在用户上午12点钟下班,锁定电脑,下午上班时就会出现这个错误,而该客户端也从服务器端离线。客户端是每隔40秒发送一个心跳包。而出现这个问题目前只出现在win7系统上,win7系统是64位旗舰版。但如果用户一直用电脑,多长时间都不会出现这个奇怪的问题,因此怀疑是防火强没有设置好,我在客户端电脑上又开了21588的端口号,但问题依旧,将客户端的防火墙关闭,问题也依旧。而让我感到困惑的是,出现这样的问题只是个别的win7系统的电脑。而大部分win7系统的电脑只要把防火墙关掉或者打开21588的端口号这样的问题就会解决。
希望有朋友能帮我解决问题,不胜感激。
...全文
492 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylfleo820 2017-06-10
  • 打赏
  • 举报
回复
sp1234非常感谢你给出的解决方法,我将试一下,系统已经在客户那里使用了。
  • 打赏
  • 举报
回复
在测试环境,这是 bug;在生产环境,这是很正常的事情,网络本来就是时断时通的(比如说恰好准备进入待机状态,或者恰好从待机中恢复而没有恢复完成)。 这基本上是一个不错的程序、没有大规模用起来,原来的开发者就走了,才会有这类“问题”。
  • 打赏
  • 举报
回复
引用 4 楼 ylfleo820 的回复:
'创建套接字 _client = New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp) '连接到指定服务器的指定端口 _client.Connect(IPAdress, 21588) 这是源代码,错误就出现在_client.Connect(IPAdress, 21588) 这一句上。
这一句,如果连接出错,可以休眠10秒钟重连,然后逐步增加休眠时间直到几分钟才重连一次。
ylfleo820 2017-06-10
  • 打赏
  • 举报
回复
电脑很干净就office2007还有就是公司的这套系统。
xuzuning 2017-06-10
  • 打赏
  • 举报
回复
只在个别电脑上发生问题,那就检查这台电脑 网络配置、防火墙设置、杀毒软件以及其他非办公软件(比如游戏、股软)
ylfleo820 2017-06-10
  • 打赏
  • 举报
回复
'创建套接字 _client = New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp) '连接到指定服务器的指定端口 _client.Connect(IPAdress, 21588) 这是源代码,错误就出现在_client.Connect(IPAdress, 21588) 这一句上。
ylfleo820 2017-06-10
  • 打赏
  • 举报
回复
这个错误给人的感觉是服务器端没有打开对应的端口,但其实是打开的。
ylfleo820 2017-06-10
  • 打赏
  • 举报
回复
问题是只要用户一直用都不会出现这个错误呀!
一品梅 2017-06-10
  • 打赏
  • 举报
回复
报错的时候,你用命令测试呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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