【问题标题】:how to assign a local port number to a socket?如何将本地端口号分配给套接字?
【发布时间】:2013-03-29 00:37:11
【问题描述】:

我在 localhost 的 1234 端口创建了一个服务器。在客户端代码中,我发起了一个struct sockaddr_in server_addr,并填写了服务器的IP地址和端口号。当我尝试将客户端连接到服务器时,我得到“地址已在使用中”:

绑定(client_sockfd, server_addr, sizeof server_addr)

所以操作系统认为我试图创建另一个具有相同地址和端口号的服务器套接字。在这种情况下,我如何告诉操作系统 server_addr 是我要连接的另一个端点,并且它为客户端的套接字找到了另一个端口号?

【问题讨论】:

    标签: c sockets network-programming


    【解决方案1】:

    您需要使用bind() 仅用于服务器和客户端使用

    int connect(int socket, const struct sockaddr *address, socklen_t address_len);.

    有关 Linux 中套接字的信息,请参阅本教程:

    http://www.linuxhowtos.org/C_C++/socket.htm

    【讨论】:

      【解决方案2】:

      你使用 connect(client_sockfd, server_addr, sizeof(..)) 告诉操作系统我的客户端套接字应该连接到这个服务器地址。

      如果是UDP socket,你也可以使用sendto(client_sockfd, ... server_addr) 调用来指定数据包应该去这个服务器地址。

      【讨论】:

        猜你喜欢
        • 2011-05-02
        • 2012-06-12
        • 1970-01-01
        • 2011-10-03
        • 2018-05-30
        • 2014-03-05
        • 2020-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多