クライアントソケットは着信接続をリッスンせず、サーバーへの発信接続を開始します。サーバーソケットは着信接続をリッスンします。
サーバーはソケットを作成し、そのソケットをIPアドレスとポート番号(TCPおよびUDPの場合)にバインドしてから、着信接続をリッスンします。クライアントがサーバーに接続すると、クライアントとの通信用に新しいソケットが作成されます(TCPのみ)。ポーリングメカニズムは、開いているソケットのいずれかでアクティビティが発生したかどうかを判断するために使用されます。
クライアントはソケットを作成し、リモートIPアドレスとポート番号(TCPおよびUDPの場合)に接続します。ポーリングメカニズム(、、、select()
などpoll()
)epoll()
を使用して、スレッドをブロックすることなく、サーバーからの情報についてソケットを監視できます。
クライアントがNAT(ネットワークアドレス変換)を提供するルーターの背後にある場合、ルーターはクライアントのアドレスをルーターのパブリックIPアドレスと一致するように書き換えます。サーバーが応答すると、ルーターはパブリックIPアドレスをクライアントのIPアドレスに戻します。ルーターは、サーバーの応答を正しいクライアントにマップできるように、変換中のアクティブな接続のテーブルを保持します。