1

我正在尝试构建一个基本的客户端服务器,所以我可以对其进行修改,然后在 IDA 中进行分析。我被指向 Beej 的套接字编程示例作为权威指南:

http://beej.us/guide/bgnet/output/html/multipage/clientserver.html

我通常使用 Cygwin 作为我的工作环境进行编程等。当我编译这些程序时,服务器程序在 Cygwin 下无法运行,尽管客户端程序可以。

当完全相同的服务器代码在 linux 下编译并运行时,没有问题,运行良好。

我让其他人以同样的方式尝试过,他们得到了同样的结果。尝试连接服务器时,客户端关闭并显示:

client: connect: connection timed out
client: failed to connect

并且数据包捕获显示 TCP SYN 数据包已发送到服务器,但它从未响应。

谁能向我解释为什么在 Cygwin 下失败并提出解决方案?

4

1 回答 1

2

我发现 Beej 给出的程序在服务器上默认为 IPv6。解决方案是使用它的 IPv6 地址来寻址客户端中的服务器地址,或者将服务器更改为使用 IPv4。这可以通过将服务器代码从

hints.ai_family = AF_UNSPEC;

hints.ai_family = AF_INET;

希望这可以帮助某人。

于 2014-04-02T17:21:29.210 回答