CASyncSocket 多线程接收 出现错误10035
DWORD WINAPI CAirplaneDlg::RecvProc()
{
INTE_TXDATA *RecvBuf = new INTE_TXDATA;//创建一个新的结构体
int len=sizeof(INTE_TXDATA);
SOCKADDR_IN addrFrom; // IP地址的结构体
int len1=sizeof(SOCKADDR_IN);
while(TRUE)
{
// 接收数据,数据在recvBuf里
((RECVPARAM*)lpParameter)->sock.ReceiveFrom(RecvBuf, len, (SOCKADDR*)&addrFrom, &len1, 0);
}
return 0;
}
创建线程函数
HANDLE hThread = CreateThread(NULL, 0, RecvProc, NULL, 0, NULL); // 创建以太网接收线程
CloseHandle(hThread); // 关闭线程,释放其引用计数
sock为CASyncSocket类型 是全局变量
执行到sock.ReceiveFrom时就会出现错误代码10035 这要怎么解决呢
[解决办法]
CASyncSocket内部创建了一个CSocketWnd类来处理网络事件,相当于有一个UI线程在单独处理了,在创建线程是多此一举
别把CASyncSocket类当成socket API用了
MFC就是这么神奇的一个类库,如果使用者不去看类库的实现代码,有些类很容易用错...