Socket编程基础——Socket选项

时间:2020-12-03 23:37:09

有些情况下,我们需要对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;

Socket编程基础——Socket选项的更多相关文章

  1. socket编程基础-字节序&sol;IP&sol;PORT转换&sol;域名

    socket编程基础 网络IP操作函数 字符串的IP和32位的IP转换 #include <sys/socket.h> #inlcude <netinet/in.h> #inc ...

  2. Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)

    在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...

  3. 【socket编程基础模板】

    网络编程的基础是基于socket编程.socket(TCP)编程基于固定编程模板 server端: socket(声明socket类型) bind(命令socket,绑定地址和端口) listen(创 ...

  4. php的socket编程(socket关键几个函数)

    php的socket编程(socket关键几个函数) 一.总结 一句话总结: socket_create.socket_connect.socket_bind.socket_listen.socket ...

  5. 【转】Java Socket编程基础及深入讲解

    原文:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html#q2.3.3 Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要 ...

  6. 【Socket】Java Socket编程基础及深入讲解

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  7. Python Socket编程基础篇

    Socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  8. socket编程基础

    socket编程 什么是socket 定义 socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求. socket起源于Unix ...

  9. c&num;socket编程基础

    Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类 ...

随机推荐

  1. HEAP CORRUPTION DETECTED &colon;after Normal block 错误

    http://blog.csdn.net/zhccl/article/details/7889590

  2. &lbrack;delphi&rsqb;indy idhttp post方法

    网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录  加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...

  3. Python 基础语法&lpar;四&rpar;

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  4. iOS 获取当前媒体音量

    #import <AVFoundation/AVAudioSession.h> AVAudioSession *audioSession = [AVAudioSession sharedI ...

  5. CF 319C&lpar;Kalila and Dimna in the Logging Industry-斜率DP&comma;注意叉积LL溢出&rpar;

    C. Kalila and Dimna in the Logging Industry time limit per test 2 seconds memory limit per test 256 ...

  6. Swift - 实现拨打电话

    要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果) 1 2 //自动打开拨号页面并自动拨打电话 UIApplication.sharedApplica ...

  7. C语言指针基础

    新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址 ...

  8. timer计算两个方法执行时间

    >>> from timeit import Timer >>> Timer("temp = x; x = y; y = temp", &quo ...

  9. day27&lpar;反射之内省机制实现BeanUtils&rpar;

    使用内省方式来实现beanUtils往对象里面存值 public class BeanInfoUtil2 { public static void setPropertyByIntrospector( ...

  10. get&lowbar;class 返回对象的类名

    get_class — 返回对象的类名 传一个对象,可以把这个对象的类名返回出来(字符串) 参考: http://php.net/manual/zh/function.get-class.php