我不明白髮生了什麼。如果我創建一個套接字到localhost以外的任何地方(「localhost」,「127.0.0.1」或機器的外部IP),它可以正常工作。 如果我創建一個套接字到一個地址沒有在該端口監聽我會得到一個10060(超時),但不是10061有道理。爲什麼當我進入本地主機時,連接被拒絕? 我試過禁用防火牆,以防萬一它搞砸了,但那不是它Winsock返回10061只連接到本地主機
我正在做所有的WSA初始化之前的東西。
_socketToServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(_socketToServer == -1){
return false;
}
p_int = (int*)malloc(sizeof(int));
*p_int = 1;
if((setsockopt(_socketToServer, SOL_SOCKET, SO_REUSEADDR,
(char*)p_int, sizeof(int)) == -1)||
(setsockopt(_socketToServer, SOL_SOCKET, SO_KEEPALIVE, (char*)p_int,
sizeof(int)) == -1)){
free(p_int);
return false;
}
free(p_int);
struct sockaddr_in my_addr;
my_addr.sin_family = AF_INET ;
my_addr.sin_port = htons(_serverPort);
memset(&(my_addr.sin_zero), 0, 8);
my_addr.sin_addr.s_addr = inet_addr(_serverIP);
if(connect(_socketToServer, (struct sockaddr*)&my_addr, sizeof(my_addr))
== SOCKET_ERROR){
DWORD error = GetLastError(); //here is where I get the 10061
return false;
}
任何想法?
這聽起來像是防火牆或反惡意軟件。你真的在運行一個正在監聽端口的程序嗎? – 2012-04-25 00:40:54
什麼是端口號?你期望收到10060,還是你想要實際連接? – marcinj 2012-04-25 00:55:12
我試過9001,9002 ... 9033。他們都沒有工作。 我有一個程序正在傾聽,但即使我沒有得到相同的結果。 它從遠程客戶端工作。其實只是爲了測試,我試圖在同一臺機器上通過膩子打開端口,並且我能夠開始連接! (服務器代碼自動發送數據,這就是我在終端中看到的)。我很困惑 – cloudraven 2012-04-25 01:56:04