有些狀況下,咱們須要對Socket行爲和屬性進一步控制,例如修改緩衝區大小,查看Socket狀態,這就須要設置/獲取Socket選項。socket
一、獲取Socket選項int getsockopt(SOCKET s,int level,int optname,void *optval,int *optlen)
s
:Socket描述符level
:選項級別,包括SOL_SOCKET
和IPPROTO_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_SOCKET
和IPPROTO_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;