2014-01-21 92 views
3

我正嘗試使用連接API連接到設備。它給我WSAECONNREFUSED錯誤。 當我連接了兩臺設備並嘗試連接其中一臺設備時,會發生這種情況。如果我只連接一臺設備,那麼connectino就會正常工作。連接():WSAECONNREFUSED連接

你們中的任何一個人都可以讓我知道這裏的問題。

這裏是我的代碼:

sockaddr_in my_addr; 

my_addr.sin_family = (USHORT)AF_INET ; 
my_addr.sin_port = htons((USHORT)host_port); 

memset(&(my_addr.sin_zero), 0, (size_t)8); 
my_addr.sin_addr.s_addr = inet_addr(pHostName); 

if (connect((SOCKET)*uiSocket, (struct sockaddr*)&my_addr, 
    sizeof(my_addr)) == SOCKET_ERROR) 
{ 
    int err = WSAGetLastError(); 
    fprintf(stderr, "Error connecting socket %d\n", WSAGetLastError()); 
    closeCxn(); 
    return false; 
} 

感謝。

+0

向我們顯示您的代碼。 – selbie

回答

3

通常ECONNREFUSED表示您嘗試連接的計算機拒絕接受連接。通常的原因是沒有程序監聽目標計算機上的指定端口。

可以確認,它是此通過從DOS提示符運行Telnet到相同的主機和端口的情況,例如:

的telnet 192.168.1.99 1234

(替換上面用適當的示例參數IP地址和端口號,當然)。如果telnet以「連接被拒絕」方式立即退出,那麼您知道問題出在遠程計算機上。如果它連接並保持連接,那麼問題更可能發生在您本地計算機的程序中。

+0

這是否意味着PC存在?我們試圖通過建立TCP連接來ping PC,只是爲了知道這是在網絡上,如果我們得到這樣的錯誤,那麼計算機就開着了,對吧? –

+2

ECONNREFUSED意味着您的TCP連接數據包到達了遠程PC,並且遠程PC回覆了一個數據包,表明它不願意在您指定的端口上接受TCP連接。所以,是的。 –