【问题标题】:Bind and socket programming绑定和套接字编程
【发布时间】:2013-06-25 11:55:47
【问题描述】:

在编写服务器套接字编程时是否需要将 socketfd 绑定到 IP 地址。 我的意思是可以在不调用绑定系统调用的情况下编写套接字编程吗? 就像套接字 -> 监听 -> 接受 -> 读/写/ -> 关闭。

【问题讨论】:

  • 在我的手机上给我打电话,我会为你回答这个问题。

标签: c sockets


【解决方案1】:

socket 应该绑定到端口或 unix 套接字文件。 你的意思是you don't want to define port number for listen?然后绑定端口号 0。它与随机端口一起使用。

memset((char *) &reader_addr, 0, sizeof(reader_addr));
reader_addr.sin_family = PF_INET;
reader_addr.sin_addr.s_addr = htonl(INADDR_ANY);
reader_addr.sin_port = 0;

if (bind(server_fd, (struct sockaddr *)&reader_addr, sizeof(reader_addr)) < 0) {
    perror("reader: bind");
    exit(1);
}

【讨论】:

  • 非常感谢您的建议。我尝试使用您建议的配置,但是在从客户端连接到服务器时,出现 Connect: Connection refused 错误。在客户端,我使用“0”连接到服务器。还有什么方法可以在侦听 netstat 输出中的哪个端口时识别该服务器。如果我提供了我可以做的端口号,但正如你所说它会随机选择,我如何从 netstat 命令中知道?
  • 没有人说您可以在客户端使用端口零。如果您在服务器上使用端口 0,则必须通过 getsockname() 发现分配的端口,并在连接时在客户端使用该端口号。
  • 感谢您的所有帮助和建议。现在完美运行。
【解决方案2】:

你在服务器端使用bind

想象一下,它是您办公室的配电盘。 bind 给它一个电话号码,以便其他人知道要拨打哪个号码。接线员listen 接听并接通电话(即处理它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多