依睛(IT blog) 我回来了,PHP<-->C/C++ LINUX

笨鸟

统计

积分与排名

友情连接

最新评论

getsockopt()/setsockopt()函数的使用收藏

getsockopt()/setsockopt()函数的使用 收藏

 

正在做tcp协议的程序,由于发送的数据较大,所以的设置tcp套接口缓冲区的大小,否则接收到的数据只是发送的一部分。我要做的是发送采集到的图像数据,不设置缓冲去的大小,每次接受到的图像总有一部分是黑色的或者整个图像都是黑色的。 

于getsockopt()/setsockopt()函数的参数格式,相关的介绍很多,我只写设置缓冲区的形式:

SO_RCVBUF和SO_SNDBUF每个套接口都有一个发送缓冲区和一个接收缓冲区,使用这两个套接口选项可以改变缺省缓冲区大小。

// 接收缓冲区
int nRecvBuf=32*1024;         //设置为32K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));

//发送缓冲区
int nSendBuf=32*1024;//设置为32K
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));

注意:

当设置TCP套接口接收缓冲区的大小时,函数调用顺序是很重要的,因为TCP的窗口规模选项是在建立连接时用SYN与对方互换得到的。对于客户,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBUF选项必须在listen前设置。

getsockopt()的设置比较简单,不在赘述。

posted on 2008-09-21 16:12 向左向右走 阅读(4395) 评论(1)  编辑 收藏 引用 所属分类: C/C++学习资料库

评论

# re: getsockopt()/setsockopt()函数的使用收藏 2008-11-27 11:29 levy

领教了!  回复  更多评论   

只有注册用户登录后才能发表评论。