我正在尝试构建一个基本的客户端服务器,所以我可以修改它然后在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下失败,并提出解决方案吗?
答案 0 :(得分:2)
我发现Beej给出的程序默认为服务器上的IPv6。解决方案是使用其IPv6地址在客户端中寻址服务器地址,或者将服务器更改为使用IPv4。这可以通过从
更改服务器代码来完成hints.ai_family = AF_UNSPEC;
到
hints.ai_family = AF_INET;
希望这有助于某人。