この節では、データを送受信するためのインタフェースについて説明します。メッセージの送受信は、次のように通常の read(2) インタフェースと write(2) インタフェースを使用できます。
write(s, buf, sizeof buf); read(s, buf, sizeof buf);
send(3SOCKET) および recv(3SOCKET) も使用できます。
send(s, buf, sizeof buf, flags); recv(s, buf, sizeof buf, flags);
send(3SOCKET) および recv(3SOCKET) は、read(2) および write(2) に非常に似ていますが、flags 引数が重要です。次のうちの 1 つまたは複数が必要である場合、flags 引数 (sys/socket.h で定義) は 0 以外の値として指定できます。
帯域外データは、ストリームソケットに固有です。recv(3SOCKET) 呼び出しで MSG_PEEK を指定した場合、存在するすべてのデータがユーザーに返されますが、データは読み取られていないものとして扱われます。次に、ソケット上で read(2) または recv(3SOCKET) を呼び出すと、同じデータが返されます。発信パケットに適用されるパケット経路を指定せずにデータを送信するオプションは現在、経路制御テーブルの管理プロセスだけに使用されています。