socket10053、10054错误

能哥 2010-05-04 02:00:24
cs架构服务端与客户端
服务端采用select模式,客户端采用普通阻塞套接字。
服务端面对客户端数量500以下。
服务端开启最长2天以后(有时几个小时以后)客户端连接不上,当这个问题出现的时候服务端recv返回10053,这时客户端连接服务端connect函数返回10054。
...全文
1111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
能哥 2012-01-09
  • 打赏
  • 举报
回复
帖子到现在还没结果啊 哈哈,其实这个原因具体我也没分析过,原因我猜是当年设计的服务器性能太差了,当服务器sleep的时候客户端发送,可能导致这种情况,另外服务器设计不好,过多的粘包处理不好也会导致这种情况,当时粘包都没有处理好!
yangxb923329 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 cwangchao 的回复:]
cs架构服务端与客户端
服务端采用select模式,客户端采用普通阻塞套接字。
服务端面对客户端数量500以下。
服务端开启最长2天以后(有时几个小时以后)客户端连接不上,当这个问题出现的时候服务端recv返回10053,这时客户端连接服务端connect函数返回10054。
[/Quote]

请问楼主,这个问题有最新进展吗?
lijianli9 2010-05-28
  • 打赏
  • 举报
回复
10053应该是对方关闭了socket造成的,我遇到过。
10054的话,应该是你的socket的句柄使用问题。
尹成 2010-05-04
  • 打赏
  • 举报
回复
再给楼主提供些资料参考下:
http://blog.csdn.net/DoDChung/archive/2008/06/12/2540047.aspx
尹成 2010-05-04
  • 打赏
  • 举报
回复
10053: 您的主机中的软件放弃了一个已建立的连接。
怀疑你的参数有问题:int tt=recv(pDlg->sHost,strClient,20,0);

另看看
char* strClient=NULL;//你这个地方是不是NULL啊,程序没有崩溃真是给你面子呵呵
int tt=recv(sHost,strClient,12,0);
能哥 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shenyi0106 的回复:]

没有关闭断开的客户端socket句柄,导致资源消耗完了,无法接受连接
[/Quote]
在服务端控制台打印出closesocket调用时间以及recv到10053的时间可以看到,服务端在closesocket调用之前recv收到10053错误,即1.recv()返回10053。2.发现recv返回值错误调用closesocket。
另外socket肯定是释放掉了。
shenyi0106 2010-05-04
  • 打赏
  • 举报
回复
没有关闭断开的客户端socket句柄,导致资源消耗完了,无法接受连接
Eleven 2010-05-04
  • 打赏
  • 举报
回复
10053:An established connection was aborted by the software in your host machine.
10054:An existing connection was forcibly closed by the remote host.

是不是服务器端的资源没有释放。。。

18,356

社区成员

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

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