(三)对套接字的设置参数进行设置

网络编程:获取设置套接字 设置套接字的选项对套接字进行控制除了设置选项外,还可以获取选项选项的概念相当于属性,所以套接字选项也可说是套接字属性有些选项(属性)只可获取,不可设置;有些选项既可设置也可获取。 阅读详情

我们还可以自己设置套接字的参数,例如缓冲区的大小,是否使用Nagle算法等等

直接上代码跟注释吧,前段时间写好放在电脑上的,直接copy一份,懒得排格式了

#include <sys/socket.h>

//设置套接字的参数主要通过两个函数。一个是设置,一个是获取设置
//获取参数
//getsockopt(int sock,int level,int optname,void*optval,socklen_t *optlen)
//sock 套接字文件描述符
//level 要查看的协议层
//optname 要查看的设置项的名称
//optval 保存查看的结果
//socklen_t 返回第四个参数的可选信息向长度
//return 成功返回0 ,失败返回-1

//设置参数
//stesockopt(int sock,int level,int optname,void*optval,socklen_t *optlen)
//sock 套接字文件描述符
//level 要设置的协议层
//optname 要设置项的名称
//optval 要设置的值
//socklen_t 第四个参数的长度
//return 成功返回0 ,失败返回-1

//使用示例
int main(int argc, char const *argv[])
{
    int tcp_sock,udp_sock;
    int sock_type;
    socklen_t optlen;
    int state;

    optlen=sizeof(sock_type);

    tcp_sock=socket(PF_INET,SOCK_STREAM,0);//SOCK_STREAM=1,是一个宏定义  套接字类型
    udp_sock=socket(PF_INET,SOCK_DGRAM,0);//SOCK_DGRAM=2  套接字类型

    state=getsockopt(tcp_sock,SOL_SOCKET,SO_TYPE,(void*)&sock_type,&optlen);
    if(state)
        error_handling();
    printf("tcp_sock socktype is %d\n",sock_type);//sock_type=1,和SOCK_STREAM是一样的,这个值只能在创建的时候设置,创建了套接字文件描述符之后是不能更改的

    state=getsockopt(udp_sock,SOL_SOCKET,SO_TYPE,(void*)&sock_type,&optlen);
    if(state)
        error_handling();
    printf("udp_sock socktype is %d\n",sock_type);//sock_type=2,和SOCK_DGRAM是一样的,这个值只能在创建的时候设置,创建了套接字文件描述符之后是不能更改的

    return 0;
}

//选项 :SO_REUSEADDR  
//Time-wait状态:
//当服务器和客户端的套接字连接已经建立的时候,如果服务器不正常关闭套接字:连接过程中,服务器使用CTRL+C强制终止程序。此时用同一个端口重新运行程序,会出现bind() error
//原因是当程序已经结束运行,但是套接字有一个Time-wait的过程,在这个事件内,套接字的端口还是在使用状态,当用同一个端口重新重新连接的时候自然会报错
//:SO_REUSEADDR 参数,决定着在time-wait期内的端口是否可以重新分配,默认是0(假)
optlen=sizeof(option);
option=1;
stesockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void *)&option,&optlen);


//选项 TCP_NODELAY  设置Nagle算法的开启或者关闭
//Nagle算法:默认使用,最大限度的进行缓冲,发送一个数据包的时候,会等到收到ACK消息,才会进行下一个数据包的传输
//如果关闭Nagle算法,就不会等待ACK回应,也就是说数据一到达发送缓冲区就会立马被发送,不会等到数据积累到一定程度才会发送,这样会大大增加网络负载
//禁用Nagle算法也是有好处的,禁用之后,不用等待回应数据包,所以能提高数据发送效率,在传输大文件的时候建议关闭Nagel算法

int option=1;
stesockopt(sock,SOL_SOCKET,TCP_NODELAY,(void *)&option,sizeof(option));`这里写代码片`
5.1.2 设置套接字的非阻塞模式   当使用socket()函数和WSASocket()函数创建套接字时,默认都是阻塞的。在创建套接字之后,通过调用ioctlsocket()函数,将该套接字设置为非阻塞模式。函数的第一个参数是套接字,第二个参数设置为FIONBIO,第三个参数设置为unsigned long类型的非零值。下面代码清单演示了如何用ioctlsocket()函数,设置套接字为非阻塞模式。SOCKET       阅读详情

相关推荐

(十三) 深入浅出TCPIP之TCP套接字参数

应用程序编写者只有在确切了解它的效果并确实需要的情况下,才设置TCP_NODELAY选项,因为设置后对网络性能有明显的负面影响。TCP_NODELAY是唯一使用IPPROTO_TCP层的选项,其他所有选项都使用SOL_SOCKET层。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。为了允许SO_LINGER,应用程序应将l_onoff设为非零,将l_linger设为零或需要的超时值(以秒为单位),然后调用setsockopt()。

yolo模型训练找我,AI游戏合作找我 949

什么是套接字(Socket)

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。       生成套接字,主要有3个参数:通信的目的IP地

wangluqinglxq的专栏 1万+

金仓数据库KCM认证考试介绍【2025年4月更新】

金仓数据库认证资深专家KCM认证考试介绍

qq709869231的博客 3227

深入理解Socket套接字:必要的参数详解

Socket套接字是在网络编程中常用的一种通信机制。它可以在不同主机之间进行数据的传输和接收。本文将深入探讨Socket套接字的必要参数,包括创建套接字时需要传入的参数,以及这些参数的具体含义和使用方法。

博客 1937

国产谷歌地球,地形分析秒杀同款地图软件

咱们做地质、林业、水文、水利、电力、GIS、地图、水保、环境的,需要经常用到各种数据,比如影像、地形、矢量、模型等,但目前80%的规划大数据展示都离不开ArcGIS,令人头大的是很多朋友连ArcGIS软件安装起来都费劲。。。 那不会ArcGIS又装不了Google Earth怎么开展工作? 今天推荐大家一款国产免费专业地图浏览下载测量分析神器—图新地球 图新地球,国产三维gis软件。可以查看高清卫星影像地形以及其他很多常用电子地图,对地图需求的掌握远胜过Google Maps,而且上手比国外软件要简单

GISWorld3D的博客 3685

网上最全的套接字socket

socket ,AF_PACKET套接字

qq_20853741的博客 1412

抖音用户评论和ID的采集方法

随着5G时代的普及,各大运营商的套餐纷纷推出,使得流量成本进一步降低。同时5G线路高宽带、低延迟的技术特性和手机普及,让视频用户访问量快速增加。 由于大量的视频工具和拍摄APP的提供,让短视频的拍摄、制作包括发行都变得更加简单便捷,越来越多的普通人可以投入视频创作,创造了更丰富的互联网内容,视频作者从视频推广中能获取粉丝和推广收益。 目前抖音就是目前最重要的短视频平台之一,要及时获取上面的用户评论和ID,需要结合爬虫代理实现采集方案,下面的代码就能快速采集相关信息: package htmlunit; i

ssbt_2020的博客 6787

【STM32】socket通信代码解析

STM32 Socket通信是一种强大的网络通信解决方案,通过Socket编程技术,STM32微控制器可以实现与其他设备之间的数据交换和远程控制,为物联网、智能家居、远程监控等领域的应用提供了强有力的支持。

大雨淅淅的博客 1805

TI单芯片毫米波雷达1642代码走读(〇)——总纲

前言 近年来,自动驾驶行业发展如火如荼,雷达技术也逐渐从军工封闭圈走向了开放的市场。 毫米波雷达具有全天候探测能力,特别是在雨雪雾天气以及夜间都能可靠工作,并且探测距离相对其他车载传感器非常远,对运动目标非常敏感,价格还低廉,这些特性都使其成为自动驾驶感知层面不可或缺的一环。 现如今的雷达已经不仅仅局限于测距测速测角等传统的功能,雷达技术正在从感知走向认知、从宽带走向超宽带、从二维走向三维四维、从相控阵走向数字阵列、从单通道走向MIMO、从独立工作走向分布式协同、从分立组件走向射频数字一体化。MIMO

3万+

Android Shadow插件化框架分析与集成(一)

到此为止,本篇文章先介绍到这里,本篇文章主要介绍了:从源码的角度去集成shadow框架,从下载源码开始,到集成到自己的项目中,其中插件项目我是新建的demo应用,宿主应用是之前搭的一个MVP框架。文章中一步一步详细的介绍了宿主该如何集成,并提供了源码;介绍了插件该如何集成,同时也提供了源码。文章中还介绍了gradle的版本与AGP版本使用不当造成的问题,以及shadow源码的gradle版本与APG版本的配置,及和宿主插件应用gradle版本与AGP版本的关系。

superzhang6666的博客 1235

套接字属性的获取与设置

一、基本概念设置套接字的选项对套接字进行控制除了设置选项外,还可以获取选项选项的概念相当于属性,所以套接字选项也可说是套接字属性有些选项(属性)只可获取,不可设置;有些选项既可设置也可获取1.选项级别SOL_SOCKET 该级别的选项只作用于套接字本身SOL_LRLMP 该级别的选项作用于IrDA协议IPPROTO_IP 该级别的选项作用于IPv4协议IPPROTO_IPV6 该级别的选项作用于IPv6协议IPPROTO_RM 该级别的选项作用于可靠的多播传输。

qq_43341187的博客 960

【教程4>第7章>第6节】基于FPGA的Viterbi维特比译码verilog实现——ACS加比选单元1

本文介绍了ACS加比选单元模块在FPGA中的实现过程,重点讲解了维特比译码中的ACS单元功能及其在硬件实现中的关键问题。文章首先概述了ACS单元在维特比译码中的作用,即通过计算和比较分支度量值来选择最优路径。接着,详细描述了FPGA实现中的分支度量值归一化处理策略,并指出了其存在的弊端。随后,文章提供了基于Verilog的ACS加比选单元模块代码,解释了其输入输出端口及工作流程。最后,总结了本小节内容,并预告了下一章节将涉及ACS顶层模块的开发与仿真测试。

FPGA/MATLAB学习教程/源码/项目合作开发 568

Linux C语言 50-套接字参数设置

本节关键字:Linux、C语言、套接字、参数设置 相关C库函数:setsockopt、getsockopt、printf、connect、send、select、assert

Tianwx的博客 582

uniapp - 详细手机端h5网页调用手机摄像头进行二维码识别扫描,在uniapp的H5移动端微信网页平台中,在浏览器中调用手机扫码功能详细教程,识别二维码并获取扫描结果(完整示例源码,一键复制即用

uniapp,h5,手机端网页,H5手机网页,uniapp开发h5实现扫码功能,uniapp微信h5网页扫码sdk使用教程,uniapp h5网页如何实现浏览器扫码,uniapp扫码功能怎么兼容h5_uniapph5怎么做扫码功能,uniapp的手机网页如何实现扫二维码一维码,浏览器H5实现js扫码,H5调用摄像头和扫一扫功能,亲测可用,H5调用本地摄像头实现扫一扫,uni-h5项目解决扫码功能,uniapp实现微信H5扫码,解决uniapp在H5端使用不能扫码问题,uni-app的h5扫码(二维码、条形码

✅ 精选推荐文章 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

套接字类型与协议设置

套接字的类型,包含Linux和Windows

m0_62418769的博客 1706

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

设置套接字属性和获取套接字属性,举例子设置套接字端口可重用

设置套接字属性 头文件 #include <sys/types.h> #include <sys/socket.h> 定 义 函 数 int setsockopt(int s, int level, int optname, const void * optval, , socklen_toptlen); 函数说明 setsockopt()用来设置参数 s 所指定的 socket 状态. 参数 level 代表欲设置的网络层, 一般设成SOL_SOCKET 以存取 so

weixin_42191545的博客 872

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

给套接字设置超时检测

在涉及套接字I/O操作上设置超时的方法有以下3种。 调用alarm, 它在指定超时期满时产生SIGALRM信号。这个方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用。 在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或write调用上。 使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项。这个方法

Ginvar的专栏 1231

Linux网络编程之套接字选项设置

inux网络编程之套接字选项设置 (2012-03-28 13:45:29) 转载▼ 标签: it 分类:程序类 1.介绍 在Linux网络编程中,有时需要设置地址复用,允许发送广播包,将主机加入某个多播组,设置发送与接收缓冲区的大小,设置发送与接收的超时时间,将套接字绑定到某个接口上,发送TCP探测包查看客户端是否保持连接等,这些都需要对套接字选项进行设置....

zy_heu的博客 679

套接字设置

套接字设置      利用套接字能完成很多丰富得应用,但要想利用套接字实现更复杂得应用,必定会涉及到调整套接字属性,通过调整套接字属性,能够实现广播、组播、地址重用、数据缓冲区以及数据超时处理等功能。 int getsockopt(int sockfd, int level, int optname,  void *optval, socklen_t *optlen); int setsockop...

manonghouyiming的博客 638

Socket 套接字常用方法

本文详细介绍了Linux C++套接字编程中常用函数的核心参数和使用方法。主要内容包括: 基础数据类型(如套接字描述符int、地址结构sockaddr_in)和必要头文件 TCP套接字编程关键函数:socket()创建套接字、bind()绑定地址、listen()监听连接、accept()接受连接、connect()发起连接、send()/recv()数据传输 UDP套接字特有的sendto()和recvfrom()函数 各函数的参数详解、返回值说明及常见错误场景 网络字节序转换函数和特殊常量(如INADD

TTKunn的博客 1082

套接字选项

函数原型: 选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当对套接字选项进行操作时,必须给出选项所处的层和选项的名称。为了操作套接字层的选项,应该将层的值指定为。为了操作其他层的选项,必须给出控制选项的协议类型号。例如,为了表示一个选项由TCP 协议解析,层应该设定为协议号 TCP。getsockopt()函数和 setsockopt()函数的返回值在函数执行成功时,返回值为 0; 函数执行出错时,返回值为-1, 错误代码可以从 errno 中获得,其含义如下所述。EBADF:参数 s 不是有效

weixin_50866517的博客 2175

二、套接字类型与协议设置

一、套接字协议及其数据传输特性 1.1 创建套接字 创建套接字的函数定义如下: #include<sys/socket.h> int socket(int domain,int type,int protocol); //成功时返回文件描述符,失败时返回-1 domain:套接字中使用的协议族(protocol family)信息 type:套接字数据传输类型信息 protocol:计算机间通信中使用的协议信息 1.2 协议族(Protocol Family) 套接字通信中协议有一些分类

kking_edc的博客 259
上一篇: (二)关于套接字的断开操作--半关闭
下一篇: 虚拟机 grub error: unknown filesystem错误解决办法
CallMeSumo
博客等级 码龄10年 82粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值