为什么服务无法监听客户的连接请求

stevecrisewu 2004-04-28 08:47:15
服务器采取WSA编程,消息机制。
刚开始时候,服务器运行良好,都能监听到客户的连接请求
但后来就再也不接收客户的连接请求了(备注,此时,客户只有一两个,也能进行良好的通信),在客户端也显示无法连接服务器。
这种情况大概由什么原因引起的,请大侠们指点一下啊。
会不会与这listen(ServerSocket,1)有关。
...全文
82 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
byjhappy 2004-04-28
  • 打赏
  • 举报
回复
Listen(ServerSocket,1)这其中ServerSocekt是什么动动,你完全可以这样监听:Listen(NetPort),其中NetPort是要监听的端口
如果你的Listen没有问题,你可以理一理你的思路:客户端连接时,服务端自动响应OnAccept(),你可以在OnAccept()中添加Accept(Socket)函数。
sjdf 2004-04-28
  • 打赏
  • 举报
回复
应该有超时机制的吧……
学习。
stevecrisewu 2004-04-28
  • 打赏
  • 举报
回复
To:wwwllg(wwwllg)
您说的有道理,测试过程中有客户非正常退出,服务器没有关闭该SOCKET连接。

再问题:如何避免这种事情,客户非正常退出是常有的事情,在服务器知道断开的这段时间内,能够接收其他客户的连接请求?

谢谢
jemmylau 2004-04-28
  • 打赏
  • 举报
回复
有没有触发监听socket的onAccept事件?

现在还说不准是客户端还是服务端的问题?
UDX协议 2004-04-28
  • 打赏
  • 举报
回复
主要和你的服务器如何处理,accept和onclose的部分有关,先从这两部分入手。
如果还联不上,是否是fd_accept事件被清除了。或是,处理accept事件的线程或什么函数不起作用了。根本没进去,都要考虑。
UDX协议 2004-04-28
  • 打赏
  • 举报
回复
会不会与这listen(ServerSocket,1)有关?
我想不会,这里的1表示,同时有多个来联接的时候,只是有一个待决状态。
大概由什么原因引起的?
我想一定是服务端有问题。可能你内部有什么限制条件,如最大联接数什么的。出现联不上很可能是超过了你的限限制条件,或以前断开的连接你没有close掉,而使自己的一些标志没有清除,导致辞不处理请求,这样,服务端不再接受请求了。表现上好象是服务器无法连接

stevecrisewu 2004-04-28
  • 打赏
  • 举报
回复
哥哥姐姐们,帮帮我吧
stevecrisewu 2004-04-28
  • 打赏
  • 举报
回复
客户端是GPRS,因此,很容易出现掉线现象。
除了用心跳的功能外,有其他更好的办法来判断客户端是否在线的吗
sharkhuang 2004-04-28
  • 打赏
  • 举报
回复
发送的端口的地址对吗?
stevecrisewu 2004-04-28
  • 打赏
  • 举报
回复
监听SOCKET。
为什么没有关闭socket后,服务器就无法相应别的客户连接了,系统怎么自动清除了FD_Accept事件呢

18,356

社区成员

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

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