b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

socket setsockopt_setsockopt设置超时_socket阻塞时间设置(3)

电脑杂谈  发布时间:2017-05-14 03:06:00  来源:网络整理

1 选项改变所要影响的套接口s

2 选项的套接口层次level

3 要设计的选项名optname

4 指向要为新选项所设置的值的指针optval

5 选项值长度optlen

这个函数参数与上面的getsockopt函数的参数的区别就在于最后一个参数仅是传递参数值。在这种情况下只是一个输入值。

应用setsockopt函数

下面的例子代码为一个套接口改变了发送以及接收缓冲区的尺寸。在设置完这些选项以后,程序会得到并报告实际的缓冲区尺寸。

/*setsndrcv.c

*

* Set SO_SNDBUF & SO_RCVBUF Options:

*/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <errno.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <assert.h>

/*

* This function report the error and

* exits back to the shell:

*/

static void bail(const char *on_what)

{

if(errno!=0)

{

fputs(strerror(errno),stderr);

fputs(": ",stderr);

}

fputs(on_what,stderr);

fputc('/n',stderr);

exit(1);

}

int main(int argc,char **argv)

{

int z;

int s=-1; /* Socket */

int sndbuf=0; /* Send buffer size */

int rcvbuf=0; /* Receive buffer size */

socklen_t optlen; /* Option length */

/*

* Create a TCP/IP socket to use:

*/

s = socket(PF_INET,SOCK_STREAM,0);

if(s==-1)

bail("socket(2)");

/*

* set the SO_SNDBUF size :

*/

sndbuf = 5000; /* Send buffer size */

z = setsockopt(s,SOL_SOCKET,SO_SNDBUF,&sndbuf,sizeof sndbuf);

if(z)

bail("setsockopt(s,SOL_SOCKET,"

"SO_SNDBUF)");

/*

* Set the SO_RCVBUF size:

*/

rcvbuf = 8192; /* Receive buffer size */

z = setsockopt(s,SOL_SOCKET,SO_RCVBUF,&rcvbuf,sizeof rcvbuf);

if(z)

bail("setsockopt(s,SOL_SOCKET,"

"SO_RCVBUF)");

/*

* As a check on the above ....

* Get socket option SO_SNDBUF:

*/

optlen = sizeof sndbuf;

z = getsockopt(s,SOL_SOCKET,SO_SNDBUF,&sndbuf,&optlen);


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-46983-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...