2013-03-29 50 views
1

我在本地主機的端口1234創建一個服務器。在客戶端代碼中,我啓動了一個struct sockaddr_in server_addr並填充了服務器的IP地址和端口號。當我嘗試將客戶端連接到服務器時,我得到「地址已在使用」:如何將本地端口號分配給套接字?

綁定(client_sockfd,SERVER_ADDR,的sizeof SERVER_ADDR)

所以OS認爲我是想使用相同的地址和端口號創建另一個服務器套接字。在這種情況下,我怎麼能告訴操作系統server_addr是我想連接的另一個端點,並且它找到客戶端套接字的另一個端口號?

回答

3

您需要使用bind()只爲服務器和客戶端使用

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

見在Linux中本教程以獲取有關插座:

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

2

您使用連接(client_sockfd,SERVER_ADDR,的sizeof(..))來告訴我的客戶端套接字應該連接到該服務器地址OS 。

如果是UDP套接字,也可以使用sendto(client_sockfd,... server_addr)調用來指定數據包應該到達此服務器地址。

相關問題