9.4 close()
ソケット記述子を閉じます。
9.4.1 書式
#include <unistd.h>
int close(int s);
9.4.2 解説
ソケットを使い終えて、send() や recv() 、あるいはそれ以外のことを一切したくなくなったら、 close() をすれば、ソケットは解放され、二度と使われることはありません。
リモート側は、このような事態が発生したかどうかを、2つの方法のいずれかで判断することができます。1つ目は、リモート側が recv() を呼び出した場合、0 を返します。2つ目は、リモート側が send() を呼び出した場合、シグナル SIGPIPE を受け取り、send() は -1 を返し、errno は EPIPE にセットされます。
Windowsユーザ:あなたが使うべき関数は closesocket() であって、close() ではありません。もし、ソケット記述子上で close() を使おうとすると、Windows が怒る可能性があります...。そして、怒られると嫌なものです。
9.4.3 返り値
成功した場合は 0 を、エラーの場合は -1 を返します(それに応じて errno が設定されます)。
9.4.4 例
s = socket(PF_INET, SOCK_DGRAM, 0);
.
.
.
// a whole lotta stuff...*BRRRONNNN!*
.
.
.
close(s); // not much to it, really.