Beej的服务器客户端套接字示例在cygwin中不起作用

时间:2013-09-12 18:51:19

标签: c sockets cygwin

我正在尝试构建一个基本的客户端服务器,所以我可以修改它然后在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下失败,并提出解决方案吗?

1 个答案:

答案 0 :(得分:2)

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

更改服务器代码来完成
hints.ai_family = AF_UNSPEC;

hints.ai_family = AF_INET;

希望这有助于某人。