【发布时间】:2011-06-13 21:29:33
【问题描述】:
当我在 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 我用这个代码有一段时间了。我有几台电脑有不同的操作系统和芯片。只有这个(使用 OS Windows 7)有这样的一个问题。我只是想知道是否有人遇到过同样的问题。谢谢
【问题讨论】:
-
一些代码在这里真的很有帮助。
-
这是哪个
connect()函数?可以贴一下代码吗? -
也许其他一些应用程序碰巧在你连接的端口上监听。如果您需要更多帮助,请发布一些代码。
-
@bmargulies 它是英特尔的 x64 处理器。我希望你知道这一点。
-
@Rafe 我希望 OP 的意思是相关,而芯片名称不是。