Socket编程基础——Socket选项

来源:互联网 发布:rtl8111f 烧录mac地址 编辑:程序博客网 时间:2024/05/16 23:34

有些情况下,我们需要对Socket行为和属性进一步控制,例如修改缓冲区大小,查看Socket状态,这就需要设置/获取Socket选项。

1、获取Socket选项
int getsockopt(SOCKET s,int level,int optname,void *optval,int *optlen)
s:Socket描述符
level:选项级别,包括SOL_SOCKETIPPROTO_TCP
optname:Socket选项的名字
optval:用于接收Socket数值的缓冲区
optlen:缓冲区大小

例如:

int optVal;int optLen=sizeof(optVal);// getsocketoptgetsockopt(ListenSocket,SOL_SOCKET,SO_ACCEPTCONN,(char*)&optVal,&optLen);cout<<"SO_ACCEPTCONN:"<<optVal<<endl;

2、设置Socket选项
int setsockopt(SOCKET s,int level,int optname,void *optval,int optlen)
s:Socket描述符
level:选项级别,包括SOL_SOCKETIPPROTO_TCP
optname:Socket选项的名字
optval:用于设置Socket数值的缓冲区
optlen:缓冲区大小

例如:

bool bopt=true;int boptLen=sizeof(bopt);// 修改前getsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&optVal,&optLen);cout<<"SO_KEEPALIVE:"<<optVal<<endl;// setsockoptsetsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&bopt,boptLen);// 修改后getsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&optVal,&optLen);cout<<"SO_KEEPALIVE:"<<optVal<<endl;
0 0
原创粉丝点击