socket一个很奇怪的10038错误

Alazer 2007-03-05 02:23:43
在VC6.0下,程序有一个很奇怪的问题
我没用使用CSocket等类,直接使用的是socket底层的函数,socket(),bind等
程序的思路是:
1.一个监听进程lsnrThrd,一旦有连接到来,验证连接,连接生成acptScok,将连接的acptSock传入另外一个线程WorkThrd(一开始该线程并不启动).
2.启动该线程WorkThrd,该线程负责读写socket数据.此时的lsnrThrd退出(这是该软件用户的要求,只能有一个连接,如果socket中断,会重新启动该lsnrThrd,软件的工作环境很稳定).

现在出现了很诡异的事情是:
客户端连入后,socket一切正常,本地的WorkThrd启动,都已经收发很多包数据了,会出现连接中断的情况,WSAGetLastError()错误号为10038(Socket operation on nonsocket.
)竟然!!!

而且这一情况出现的频率很低,大约20次会有一次,如果客户端和服务端程序运行在同一机器上,出现的频率会高一点.一般情况下出现了这种情况客户端重连1次到3次就会稳定了,就不会再出现这种情况了.

各位大侠有遇到这种问题的没有??会是什么原因造成的?
...全文
948 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhxxx 2007-03-06
  • 打赏
  • 举报
回复

An operation was attempted on something that is not a socket.
batizhou 2007-03-05
  • 打赏
  • 举报
回复
这是该软件用户的要求,只能有一个连接
--------------------------------------------
你干嘛老是起停ListenThread和WorkThrd,用个计数器,连接数为1时accept后立刻close不就完了,或者一定要关闭监听端口,也没必要关闭线程。

你的程序调用过closesocket了,设个端点,跟踪一下吧。

18,356

社区成员

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

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