c++ - 无论连接是否成功,函数 connect() 都返回零

标签 c++ tcp

当我在 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/

相关文章:

c++ - 在 Qt Creator 中链接 EGL?

elasticsearch - 通过 JSON 查询在 Java 客户端中聚合 - 没有 AggregationBuilder

Java 客户端/服务器 - 通过 Socket 连接发送多个字符串

c++ - 在 C++ 中删除和重建单例

c++ - 确定将一个平面转换为与另一个平面平行的仿射变换

c++ - OpenCV 的 Python 或 C++ 编码之间的性能是否不同?

c++ - 从 QGraphics GridLayout 中的 QTWidgets 中删除边框

c - 全局客户表 C : Chatroom

c - Unix 套接字编程是否确保没有传输丢失,还是我必须将其合并到应用程序级别?

java - Thrift TSimpleServer 在多次成功请求后变得无响应