我在localhost的端口1234创建一个服务器。在客户端代码中,我发起了struct sockaddr_in server_addr
并用服务器的IP地址和端口号填充它。当我尝试将客户端连接到服务器时,我得到“地址已在使用中”:
bind(client_sockfd,server_addr,sizeof server_addr)
因此操作系统认为我正在尝试使用相同的地址和端口号创建另一个服务器套接字。在这种情况下,我如何告诉操作系统server_addr是我想要连接的另一个端点,并且它找到了客户端套接字的另一个端口号?
答案 0 :(得分:3)
您只需要为服务器使用bind()
,而在客户端使用
int connect(int socket, const struct sockaddr *address,
socklen_t address_len);
。
有关Linux中套接字的信息,请参阅本教程:
答案 1 :(得分:2)
使用connect(client_sockfd,server_addr,sizeof(..))告诉操作系统我的客户端套接字应该连接到此服务器地址。
如果是UDP套接字,您还可以使用sendto(client_sockfd,... server_addr)调用来指定数据包应该转到此服务器地址。