在撰寫socket多執行緒通信的時候,接收和發送訊息時有時候會出現一個莫名其妙的IP地址連入,接到的資訊是GET / HTTP/1.1,然后導致連接全部斷開。請問這個是什么意思。
uj5u.com熱心網友回復:
那是網上有爬蟲在掃WEB頁面。至于為什么導致連接全部斷開,問題還是出在你的代碼上。
uj5u.com熱心網友回復:
哦哦,這樣。
謝謝。那我改改代碼。
uj5u.com熱心網友回復:
UINT server_thd(LPVOID p)
{
WSADATA wsaData;
WORD wVersion;
wVersion = MAKEWORD(2,2);
WSAStartup(wVersion,&wsaData);
SOCKADDR_IN local_addr;
SOCKADDR_IN client_addr;
int iaddrSize = sizeof(SOCKADDR_IN);
CSocketDemoDlg * dlg = (CSocketDemoDlg *)AfxGetApp()->GetMainWnd();
local_addr.sin_family = AF_INET;
local_addr.sin_port = htons(5150);
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
listen_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(listen_sock, (struct sockaddr*) &local_addr, sizeof(SOCKADDR_IN));
listen(listen_sock, 50);
while(1)
{
sock = accept(listen_sock,(struct sockaddr *)&client_addr,&iaddrSize);
CString port;
port.Format("%d", int(ntohs(client_addr.sin_port)));
dlg->update( "已連接來自:" + CString(inet_ntoa(client_addr.sin_addr)) + " 埠:" + port);
CreateThread(NULL,0,Thread_1,(LPVOID)sock,0,NULL); //將新的SOCKET傳給執行緒
}
return 0;
}
能不能幫我看一下這段代碼有沒有什么問題。程式打開時運行這個執行緒去監聽,監聽到以后新建一個執行緒去通信。
uj5u.com熱心網友回復:
斷開是你自己程式主動呼叫shutdown/closesocket來斷開連接的嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105202.html
標籤:網絡編程
上一篇:CFile::modeWrite|CFile::modeCreate
下一篇:HttpEndRequest(hRequest, NULL, 0, 0)回傳ERROR_INTERNET_FORCE_RETRY
