1

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

绑定(client_sockfd,server_addr,sizeof server_addr)

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

4

2 回答 2

3

bind()只需要用于服务器和在客户端使用

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

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

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

于 2013-03-29T00:41:51.643 回答
2

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

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

于 2013-03-29T00:42:30.453 回答