zoukankan      html  css  js  c++  java
  • Socket编程基础——Socket选项

    有些情况下,我们需要对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);
    // getsocketopt
    getsockopt(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;
    // setsockopt
    setsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&bopt,boptLen);
    // 修改后
    getsockopt(ListenSocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&optVal,&optLen);
    cout<<"SO_KEEPALIVE:"<<optVal<<endl;
  • 相关阅读:
    盲山有感
    一个用Regex的完成sql语句中字段替换的demo
    月夜奔跑
    乱弹
    《勇敢抉择》摘录一
    梦想高歌
    从今天起
    php性能优化
    unity3d shader中RenderType的所有类型
    Unity打包ipa图文教程
  • 原文地址:https://www.cnblogs.com/limicheng/p/4009177.html
Copyright © 2011-2022 走看看