Socket編程基礎——Socket選項

有些狀況下,咱們須要對Socket行爲和屬性進一步控制,例如修改緩衝區大小,查看Socket狀態,這就須要設置/獲取Socket選項。socket

一、獲取Socket選項
int getsockopt(SOCKET s,int level,int optname,void *optval,int *optlen)
s:Socket描述符
level:選項級別,包括SOL_SOCKETIPPROTO_TCP
optname:Socket選項的名字
optval:用於接收Socket數值的緩衝區
optlen:緩衝區大小code

例如:get

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

二、設置Socket選項
int setsockopt(SOCKET s,int level,int optname,void *optval,int optlen)
s:Socket描述符
level:選項級別,包括SOL_SOCKETIPPROTO_TCP
optname:Socket選項的名字
optval:用於設置Socket數值的緩衝區
optlen:緩衝區大小List

例如:top

bool bopt=true;
int boptLen=sizeof(bopt);
// 修改前
getsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&optVal,&optLen);
cout<<"SO_KEEPALIVE:"<<optVal<<endl;
// setsockopt
setsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&bopt,boptLen);
// 修改後
getsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&optVal,&optLen);
cout<<"SO_KEEPALIVE:"<<optVal<<endl;
相關文章
相關標籤/搜索