2014-01-21 94 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连接。所以,是的。 –