本人用线程处理一个非阻塞socket的接收数据,发送数据在主线程中进程.实现过程简单与下:
主线程:
socket connect成功后,AfxBeginThread(myFunc,.....),然后senddata1(1代表第一次)
发送数据等操作
线程函数myFunc简单如下:
...
while(1)
{
WSAEventSelect(..)
......
WSAWaitForMultipleEvents(..)
......
WSAEnumNetworkEvents()
switch(type.lNetworkEvents)
{
case FD_READ:
senddata();
......
}
}出现的问题是:连接成功后第一次发送的数据在线程函数中得到响应,但在第二次,第三次的发送数据
线程却不能通过WSAWaitForMultipleEvents,请问是什么原因呢?还有两个问题:
1.WSAEventSelect(..)等函数应该写在什么地方,写在线程里合适吗?
我写在线程主要是考虑它的循环
请高手指点,谢谢!
主线程:
socket connect成功后,AfxBeginThread(myFunc,.....),然后senddata1(1代表第一次)
发送数据等操作
线程函数myFunc简单如下:
...
while(1)
{
WSAEventSelect(..)
......
WSAWaitForMultipleEvents(..)
......
WSAEnumNetworkEvents()
switch(type.lNetworkEvents)
{
case FD_READ:
senddata();
......
}
}出现的问题是:连接成功后第一次发送的数据在线程函数中得到响应,但在第二次,第三次的发送数据
线程却不能通过WSAWaitForMultipleEvents,请问是什么原因呢?还有两个问题:
1.WSAEventSelect(..)等函数应该写在什么地方,写在线程里合适吗?
我写在线程主要是考虑它的循环
请高手指点,谢谢!
连connect也摆在了AfxBeginThread后面
现在的流程是:
WSAEventSelect()---->AfxBeginThread()---->connect()---->send()