我有簡單的TCP服務器,減少連接。我的TCP服務器被WSACancelBlockingCall殺死了?
UINT MTServerThread(LPVOID pParam)
{
FILELog::ReportingLevel() = logINFO;
WSADATA wsaData;
sockaddr_in local;
int wsaret=WSAStartup(0x101,&wsaData);
if(wsaret!=0)
{
return 0;
}
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_port=htons((u_short)20248);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
{
return 0;
}
if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
{
return 0;
}
if(listen(server,10)!=0)
{
return 0;
}
SOCKET client;
sockaddr_in from;
int fromlen=sizeof(from);
while(true)
{
FILE_LOG(logINFO)<<"connecting";
client=accept(server,(struct sockaddr*)&from,&fromlen);
if (client==INVALID_SOCKET)
{
int g = WSAGetLastError();
FILE_LOG(logINFO)<<"invalid socket code "<<g;
}
AfxBeginThread(ClientThread,(LPVOID)client);
}
return 0;
}
我需要使用第三方編譯的DLL庫,也使自己的TCP通信不涉及到我的服務器和行爲像客戶端。在創建庫類對象並將其用於某些與其自己的(庫)TCP通信相關的過程之後,我的斷點在行int g = WSAGetLastError();
上丟失。最後一個錯誤的結果是10004
這意味着:
WSAEINTR
10004
Interrupted function call.
A blocking operation was interrupted by a call to WSACancelBlockingCall.
是否有可能在DLL的代碼會影響我的TCP服務器?我有DLL源代碼,但我不能找到電話WSACancelBlockingCall
在它。
如何開始解決這個問題?
我用winsock 2.2版本進行了測試,但得到了相同的結果。我已經在兩臺機器上測試了這個項目,其中沒有安裝防病毒軟件。我不認爲這是防病毒問題,因爲如果我不創建dll類對象程序運行良好 – vico
防火牆怎麼樣?你有排除嗎? –
我已經測試過關閉防火牆 – vico