【问题标题】:Beej's server client socket examples don't work in cygwinBeej 的服务器客户端套接字示例在 cygwin 中不起作用
【发布时间】:2013-09-12 18:51:18
【问题描述】:

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

【问题讨论】:

    标签: c sockets cygwin


    【解决方案1】:

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

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

    hints.ai_family = AF_INET;
    

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      相关资源
      最近更新 更多