TCP / IPコンピュータネットワークのためのソケットプログラミングの手引書

ソケットプログラミングは、サーバーとクライアントコンピューターを接続します。

ソケットプログラミングは、 TCP / IPネットワーク上の通信の基本技術です。 ソケットは、ネットワーク上で実行されている2つのプログラム間の双方向リンクの1つのエンドポイントです。 ソケットは、別のソケットでデータを送受信するための双方向通信エンドポイントを提供します。 ソケット接続は、通常、ローカルエリアネットワーク( LAN )上またはインターネット上の2つの異なるコンピュータ間で実行されますが、1台のコンピュータ上でのプロセス間通信にも使用できます。

ソケットとアドレス

TCP / IPネットワーク上のソケットエンドポイントには、それぞれIPアドレスとTCP / IP ポート番号の組み合わせである一意のアドレスがあります。 ソケットは特定のポート番号にバインドされているため、TCPレイヤーは送信されたデータを受信するアプリケーションを識別できます。 新しいソケットを作成するとき、ソケットライブラリはそのデバイス上で一意のポート番号を自動的に生成します。 プログラマは特定の状況でポート番号を指定することもできます。

サーバーソケットのしくみ

通常、サーバーは1台のコンピューター上で動作し、特定のポートにバインドされたソケットを持っています。 サーバーは、別のコンピューターが接続要求を行うのを待ちます。 クライアントコンピュータは、サーバーコンピュータのホスト名と、サーバーが待機しているポート番号を認識します。 クライアントコンピュータはそれ自体を識別し、すべてがうまくいけば、サーバーはクライアントコンピュータの接続を許可します。

ソケットライブラリ

低レベルのソケットAPIに直接コードするのではなく、ネットワークプログラマは通常、ソケットライブラリを使用します。 2つの一般的に使用されるソケットライブラリは、Linux / Unixシステム用のBerkeley SocketsとWindowsシステム用のWinSockです。

ソケットライブラリは、open()、read()、write()、およびclose()など、ファイルの操作に使用するプログラマーと同様のAPI関数のセットを提供します。