受信バッファのサイズなどソケットの動作を決める様々な特性は「ソケットオプション」の値を変更することで調整できる
getter, setterは以下の通り
int getsockopt(int socket, int level, int optName, void *optVal, unsigned int *optLen)
int setsockopt(int socket, int level, int optName, const void *optVal, unsigned int optLen)
ソケットの受信バッファサイズ(bytes)を取得し、それを2倍にする例
int rcvBufferSize;
int sockOptSize;
/* デフォルトのバッファサイズを取得 */
sockOptSize = sizeof(rcvBufferSize);
if(getsockopt(sock, SOL_SOCKET, SO_RCVBUF, &rcvBufferSize, &sockOptSize) < 0)
DieWithError("getsockopt() failed")
printf("Initial Receive Buffer Size: %d\n", rcvBufferSize);
/* デフォルトのバッファサイズを取得 */
rcvBufferSize *= 2;
if(setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &rcvBufferSize, sizeof(rcvBufferSize)) < 0)
DieWithError("setsockopt() failed");