Socket编程基础——Socket选项

算法映星使
• 阅读 3308

有些情况下,我们需要对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;
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SOCKET选项
1. IP\_TRANSPARENT\1\socket设置该选项后,可以处理发往非本机的数据包。  \2\使用流程:    配置防火墙和路由:iptablestmangleAPREROUTING!d10.0.110.250ptcpjTPROXYonport10000on
雷厉风行 雷厉风行
2年前
mac软件-G-dis for Mac(Redis客户端)v7.0.2激活版
Mac好用的Redis客户端Gdis破解版推荐给大家,Gdis是采用纯swift语言开发的,底层采用swift的socket编程,通过调用poll、MSGPEEK来控制socket连接超时和做socket阻塞判断。支持二进制的key、value数据存入和取
Wesley13 Wesley13
3年前
Java如何在指定端口创建套接字?
在Java编程中,如何在指定端口创建套接字并连接到指定服务器的端口?下面的例子演示了Socket类的Socket构造函数,并且使用getLocalPort(),getLocalAddress(),getInetAddress()以及getPort()方法获取Socket细节。packagecom.yiibai;
Stella981 Stella981
3年前
Android Socket 通信
Androidsocket通信安卓编写Socket客户端,实现连接Socket服务端通信。创建Socket连接并获取服务端数据先创建几个全局变量吧privateBufferedWriterwriternull;Socketsocket;
Stella981 Stella981
3年前
Socket编程
sockaddr\_in与sockaddrsockaddr是在头文件/usr/include/bits/socket.h中定义的,如下:/Structuredescribingagenericsocketaddress./structsockaddr
Stella981 Stella981
3年前
Socket
根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTPGET和POST请求,然后就是WebService的SOAP。在这些方式中,Socket当然是最基础的。因此先从Socket开始。服务端就不需要过多的说明了,无论采用什么语言什么平台都可以,只要遵循基
Stella981 Stella981
3年前
Django入门
通过socket入门html代码实现:socket1importsocketimportrefromthreadingimportThreadserversocket.socket()server.bind(('127.0.0.1',8899))
Wesley13 Wesley13
3年前
Java Socket编程——通信是这样炼成的
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络)关于计算机网络部分可以参
Stella981 Stella981
3年前
Django学习之路
基础web框架的实现1.纯手撸web框架。  1、手动书写socket代码  2、手动处理http数据socket套接字importsocketserversocket.socket()server.bind(('127.0.0.1',8080))serv
Wesley13 Wesley13
3年前
Java网络学习笔记3:设置Socket选项(补充)
 接上一篇(http://my.oschina.net/gently/blog/531117)博文,在小小添加几个Socket选项, 4.SO\_LINGER选项://设置该选项:public void setSoLinger(boolean on,int seconds) throws SocketExcepti
桥蕤 桥蕤
1年前
Python socket、multiprocessing和threading模块的使用
1.socketPython用socket模块可以实现简单的网络通信1.1创建客户端pythonimportsocketdefclientsocket():定义客户端clientsocket.socket(socket.AFINET,socket.SOCK