当我在 i7 计算机上使用 connect()
函数时,无论连接是否成功,它总是返回零。我只是没有要连接的其他应用程序,它无论如何都返回零(服务器地址 127.0.0.1)。
当我在不同的计算机上运行相同的应用程序时,它的行为是正确的。那么,可能是什么问题?
谢谢。
在下面编辑从答案移动。
代码
struct hostent* pHostEntry;
pHostEntry = gethostbyname(host);
if(pHostEntry == NULL)
{
return 0;
}
struct in_addr* host_addr = (struct in_addr*) * pHostEntry->h_addr_list;
if(host_addr == NULL)
{
return 0;
}
long sockfd;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
return 0;
}
memset((char*) &serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr = *host_addr;
serv_addr.sin_port = htons(port);
if(connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == SOCKET_ERROR)
{
CloseSocket();
sockfd = -1;
return 0;
}
在这里。在这里我总是零。当然,我检查了是否有任何其他应用程序在同一端口上监听。那里没人。此外,如果我有一个,那么如果我的服务器打开,我就无法工作。但是当我的服务器打开时,我没有任何冲突。 i7 -> Intel(R( Core(TM) i7 CPU 930 @ 2,80GHz 2.80 GHz 我现在使用这段代码有一段时间了。我有几台具有不同操作系统和芯片的计算机。只有这个(操作系统 Windows 7)有这样的一个问题。我只是想知道是否有人遇到过同样的问题。谢谢
最佳答案
Windows 7 完全有可能返回远程服务器的 IP6 地址。我建议您检查 pHostEntry->h_addrtype
的值。
关于c++ - 无论连接是否成功,函数 connect() 都返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771797/