ソケットプログラミングは、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関数のセットを提供します。




