• 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;
  • 相关阅读:
    HTTP下载文件校验失败原因分析与解决
    读《软件测试的艺术》
    CXF wsdl2java 错误
    oracle 存储过程 多参数 多返回值
    ORACLE 函数 调用
    typescript学习入门(学习笔记)
    js常用方法总结
    jenkins安装及项目构建发布回滚
    Centos8中创建LVM精简逻辑卷
    k8s kubectl命令自动补全
  • 原文地址:https://www.cnblogs.com/limicheng/p/4009177.html
Copyright © 2020-2023  润新知