Connect():连接时WSAECONNREFUSED

时间:2014-01-21 09:54:55

标签: windows sockets

我正在尝试使用Connect api连接到设备。它给了我WSAECONNREFUSED错误。 当我连接两个设备并尝试连接其中一个设备时会发生这种情况。如果我只连接一个设备,那么connectino就可以了。

你们当中有没有人让我知道这个问题。

这是我的代码:

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;
}

感谢。

1 个答案:

答案 0 :(得分:3)

通常,ECONNREFUSED表示您尝试连接的计算机拒绝接受连接。通常的原因是没有程序监听目标计算机上的指定端口。

您可以通过从DOS提示符运行telnet到同一主机和端口来确认是这种情况,例如:

telnet 192.168.1.99 1234

(当然,用适当的IP地址和端口号替换上面的示例参数)。如果telnet立即退出“拒绝连接”方法,那么您就知道问题出在远程计算机上。如果它连接并保持连接,则本地计算机程序更有可能出现此问题。