socket问题

jakwos 2012-06-12 02:20:32
我用C# socket写了一个后台服务端,通过这个服务端异步接收来自客户端的连接,经过握手后,异步接收客户端发送过来的数据,然后根据客户端发送过来的数据对数据库执行相应操作,某些对数据库的查询时间相应比较长,现在我遇到一个问题,每当服务端运行到一定时间后,客户反应登录不了服务器,客户端登录时先与服务端建立连接,再发送登录报文到服务端,但其他已经登录的用户报文可以正常发送与接收,我猜测可能是服务端在一段时间后没有办法接收新的客户端连接,或者建立了新的连接后,没办法接收与响应客户端数据,大家有没有遇到过类似的问题?欢迎讨论....
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakwos 2012-06-19
  • 打赏
  • 举报
回复
谢谢了,这个问题我已经解决了,主要原因还是在于客户端在一定情况下退出程序后没有直接调用与服务端连接关闭所致,另外可能的问题还在于,socket服务端遭到攻击,我同时也加了防止socket攻击部分的代码...
__天涯寻梦 2012-06-15
  • 打赏
  • 举报
回复
启动侦听时 Listen 方法有个参数,是挂起连接队列的最大长度,可以设置大一点的数值,让更多的连接参与进来,不过最好还是优化下查询
Socket skt = ......;
......
skt.Listen(50);
jakwos 2012-06-15
  • 打赏
  • 举报
回复
心跳机制有的,加了心跳机制之后能看出我的程序也被重启过,但这只能是解决自己不需要去手动重启服务端,服务器运行压力比较大的情况下,我的心跳检测程序也不能重启,不知道你们的心跳机制是怎么实现的?
bcc222 2012-06-12
  • 打赏
  • 举报
回复
发心跳文件,就是开启一个定时器,每隔多长时间就去发一次!
bcc222 2012-06-12
  • 打赏
  • 举报
回复
原来用c++的时候遇到过,解决的办法就是发心跳文件!只要连接上了就一直发,如果发现没有收到,就断掉重新发!当时找不出来是哪里的问题,估计是tcp下层的问题!

110,566

社区成员

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

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

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