1

localhost のポート 1234 にサーバーを作成します。クライアント コードでは、 を開始struct sockaddr_in server_addrし、サーバーの IP アドレスとポート番号を入力しました。クライアントをサーバーに接続しようとすると、「アドレスは既に使用されています」というメッセージが表示されます。

bind(client_sockfd, server_addr, sizeof server_addr)

そのため、OS は、同じアドレスとポート番号を持つ別のサーバー ソケットを作成しようとしていたと認識します。この場合、server_addr が接続先の他のエンドポイントであり、クライアントのソケット用に別のポート番号を見つけることを OS に伝えるにはどうすればよいでしょうか?

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(..)) を使用して、クライアントソケットがこのサーバーアドレスに接続する必要があることをOSに伝えます。

UDP ソケットの場合は、sendto(client_sockfd, ... server_addr) 呼び出しを使用して、パケットがこのサーバー アドレスに送信されるように指定することもできます。

于 2013-03-29T00:42:30.453 に答える