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

setsockopt_setsockopt accept_setsockopt设置超时(2)

电脑杂谈  发布时间:2017-05-28 06:12:46  来源:网络整理

{

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)");

/*

* Get socket option SO_SNDBUF:

*/

optlen = sizeof sndbuf;

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

if(z)

bail("getsockopt(s,SOL_SOCKET,"

"SO_SNDBUF)");

assert(optlen == sizeof sndbuf);

/*

* Get socket option SON_RCVBUF:

*/

optlen = sizeof rcvbuf;

z = getsockopt(s,SOL_SOCKET,SO_RCVBUF,&rcvbuf,&optlen);

if(z)

bail("getsockopt(s,SOL_SOCKET,"

"SO_RCVBUF)");

assert(optlen == sizeof rcvbuf);

/*

* Report the buffer sizes:

*/

printf("Socket s: %d\n",s);

printf("Send buf: %d bytes\n",sndbuf);

printf("Recv buf: %d bytes\n",rcvbuf);

close(s);

return 0;

}

程序的运行结果如下:

$ ./getsndrcv

socket s : 3

Send buf: 65535 bytes

Recv buf: 65535 bytes

设置套接口选项

如果认为套接口的默认发送以及接收缓冲区的尺寸太大时,作为程序设计者的我们可以将其设计为一个小的缓冲区。当我们程序一个程序的几个实例同时运行在我们的系统上时,这显得尤其重要。

可以通过setsockopt(2)函数来设计套接口选项。这个函数的概要如下:

#include

#include

int setsockopt(int s,

int level,

int optname,

const void *optval,

socklen_t optlen);

这个函数与我们在上面所讨论的getsockopt函数类似,setsockopt函数的参数描述如下:

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

2 选项的套接口层次level

3 要设计的选项名optname

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

5 选项值长度optlen

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


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

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

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