在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次就会稳定了,就不会再出现这种情况了.各位大侠有遇到这种问题的没有??会是什么原因造成的?
我没用使用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次就会稳定了,就不会再出现这种情况了.各位大侠有遇到这种问题的没有??会是什么原因造成的?
解决方案 »
- [求助]关于Opengl的多次旋转问题
- 怎么更改一个应用程序图标;
- 两个窗体切换问题
- 如何写一个MFC注册表读写程序
- 怎样在VC中生成HTM文件?
- 为什么我在watch窗口里输入@err,hr显示的是一个很大的整数,用error lookup查不到
- aa
- 请问怎么样设置程序初始界面的大小
- 一个得分问题!!!!!!!!!!!!!
- Combo Box 为什么不可以加数据类型为 Cstring的变量。
- 基于Dialog的界面上有5个Button,一个TreeList,一个ListBox。需要实现点击一个按钮的时候,ListBox隐藏,同时5个按钮重新布局,能实现码
- 求网络通信例子一个!! 要有详细的注释
--------------------------------------------
你干嘛老是起停ListenThread和WorkThrd,用个计数器,连接数为1时accept后立刻close不就完了,或者一定要关闭监听端口,也没必要关闭线程。你的程序调用过closesocket了,设个端点,跟踪一下吧。
An operation was attempted on something that is not a socket.