ネットワークプログラミングの分野では,ソケット (Socket) とはプログラム間でデータの送受信を行うための標準的なプログラミングインターフェイス (API) を指します.UNIX 系 OS で最初に用いられましたが,現在では通信をを実現する標準のインタフェイスとしてほとんどの OS に実装されています.
ソケットの仕組みに則ってプログラムを記述すれば,具体的な通信手段や手順の詳細を知らなくても通信機能が実装できます.このとき,通信相手の種類や仕様に合わせて通信を行うコードを記述する必要はありません.
ソケットはプログラム間でのデータ転送と受信のみを行うものであり,データの中身には関知せずにバイト列をそのまま転送します. データの内容を規定したり解釈するのは,ソケット通信を使う上位のプログラムの役目です. 送信されてくるデータのメッセージフォーマットを規約化することで,受信側プログラムはデータを解析したり,内部的にフォーマット変換を行うことなどが可能になります.
ここでは,TCP/IP を使用してネットワーク通信 (ソケット通信) を行うプログラムのサンプルを示します.サーバとクライアント間で簡単な通信を行うプログラムです.
TCP サーバ機能を実現するサンプルプログラムです.ソースプログラムは,server.c です.
プログラムはコマンドとして起動するもので,仕様は以下です.
server [port_no] パラメータ: port_no : 通信ポート番号(省略時は,5000)
プログラムは,以下の機能を実行します.
TCP クライアント機能を実現するサンプルプログラムです.ソースプログラムは,client.c です.
プログラムはコマンドとして起動するもので,仕様は以下です.
client host_address [port_no] パラメータ: host_address : サーバのホスト名または IP アドレス port_no : 通信ポート番号(省略時は,5000)
プログラムは,以下の機能を実行します.
実行時の注意点は,以下です.