生产企业网站欣赏中国icp备案网站

web/2025/10/5 6:40:05/文章来源:
生产企业网站欣赏,中国icp备案网站,南山做网站公司在哪里,cps推广平台使用readv和writev函数可以提高数据通信的效率#xff0c;它们的功能可以概括为**“对数据进行整合传输及发送”**。 即使用writev函数可以将分散在多个缓冲中的数据一并发送#xff0c;使用readv函数可以由多个缓冲分别接受#xff0c;所以适当使用他们可以减少I/O函数的调… 使用readv和writev函数可以提高数据通信的效率它们的功能可以概括为**“对数据进行整合传输及发送”**。 即使用writev函数可以将分散在多个缓冲中的数据一并发送使用readv函数可以由多个缓冲分别接受所以适当使用他们可以减少I/O函数的调用次数。 1.readv和writev函数 ①readv函数 用于从文件描述符中读取数据并存储在多个缓冲区中。 ssize_t readv( int fd, //文件描述符。 const struct iovec *iov, //指向 iovec 结构体数组的指针iovec 结构体定义了一个缓冲区。 int iovcnt//iovec 结构体数组的元素个数。 );//iovec 结构体 struct iovec {void *iov_base; //指向缓冲区的起始地址基地址size_t iov_len; //缓冲区的长度即需要传输的字节数 }; 示例代码 #includestdio.h #includesys/uio.h #define BUF_SIZE 100 int main(int argc, char *argv[]) {struct iovec vec[2];char buf1[BUF_SIZE] {0, };char buf2[BUF_SIZE] {0, };int str_len;//设置两个缓存区第一个存储5个字节剩下的给第二个缓冲区vec[0].iov_base buf1;vec[0].iov_len 5;vec[1].iov_base buf2;vec[1].iov_len BUF_SIZE;str_len readv(0, vec, 2);//第一个参数是0,即接受键盘输入printf(Read total bytes: %d \n, str_len);printf(First message: %s \n, buf1);printf(Second message: %s \n, buf2);return 0; }②writev()函数 用于将多个缓冲区中的数据写入文件描述符这种方法称为“聚集写”或“向量写”。 ssize_t writev( int fd, //文件描述符 const struct iovec *iov, //指向 iovec 结构体数组的指针iovec 结构体定义了一个缓冲区。 int iovcnt//iovec 结构体数组的元素个数。 );//iovec 结构体 struct iovec {void *iov_base; //指向缓冲区的起始地址基地址size_t iov_len; //缓冲区的长度即需要传输的字节数 }; 示例代码 #includestdio.h #includesys/uio.hint main(int argc, char *argv[]){struct iovec vec[2];//有两个缓冲char buf1[] 1234567890;char buf2[] ABCDEFGHIJ;int str_len;vec[0].iov_base buf1;vec[0].iov_len 10;vec[1].iov_base buf2;vec[1].iov_len 10;str_len writev(1, vec, 2);//第一个参数是1,所以是向控制台输出puts();printf(writev bytes: %d \n, str_len); }2.在Windows中实现紧急消息机制 在《TCP/IP网络编程》第十三章多种I/O函数1中已经基于Linux平台实现了MSG_OOB机制但是是基于Linux的信号处理机制所以无法直接移植到Windows平台。 若要在Windows平台上实现该机制则需要通过select()函数该函数简介参考《TCP/IP网络编程》第十二章I/O复用1 PSMSG_OOB在select()监视下会被视为异常数据 发送端代码 #includestdio.h #includestdlib.h #includewinsock2.h#define BUFSIZE 30 void ErrorHandling(char* message);int main(int argc, char* argv[]){WSADATA wsa;SOCKET hSocket;SOCKADDR_IN sendAddr;if(argc!3){printf(Usage : %s IP port\n, argv[0]);exit(1);}if(WSAStartup(MAKEWORD(2,2), wsa) ! 0){ErrorHandling(WSAStartup() error!);}hSocket socket(PF_INET, SOCK_STREAM, 0);memset(sendAddr, 0, sizeof(sendAddr));sendAddr.sin_family AF_INET;sendAddr.sin_addr.s_addr inet_addr(argv[1]);sendAddr.sin_port htons(atoi(argv[2]));if(connect(hSocket, (SOCKADDR*)sendAddr, sizeof(sendAddr)) SOCKET_ERROR)ErrorHandling(connect() error!);send(hSocket, 123, 3, 0);send(hSocket, 4, 1, MSG_OOB);//带外数据在select的监视中会被视为异常数据send(hSocket, 567, 3, 0);send(hSocket, 890, 3, MSG_OOB);//只把最后一个字节0作为紧急信息发送closesocket(hSocket);WSACleanup();return 0; }void ErrorHandling(char* message){fputs(message, stderr);fputc(\n, stderr);exit(1); }接受端代码 #includestdio.h #includestdlib.h #includewinsock2.h#define BUFSIZE 30 void ErrorHandling(char *);int main(int argc, char *argv[]){WSADATA wsa;SOCKET hAcptSock, hRecvSock;SOCKADDR_IN sendAdr, recvAdr;int sendAdrSz,strLen;char buf[BUFSIZE];int result;fd_set read,except,read_copy,except_copy;struct timeval timeout;if(argc ! 2){printf(Usage : %s port\n, argv[0]);exit(1);}if(WSAStartup(MAKEWORD(2,2), wsa) ! 0)ErrorHandling(WSAStartup() error!);hAcptSock socket(PF_INET, SOCK_STREAM, 0);if(hAcptSock INVALID_SOCKET)ErrorHandling(socket() error);memset(recvAdr, 0, sizeof(recvAdr));recvAdr.sin_family AF_INET;recvAdr.sin_addr.s_addr htonl(INADDR_ANY);recvAdr.sin_port htons(atoi(argv[1]));if(bind(hAcptSock, (SOCKADDR*)recvAdr, sizeof(recvAdr)) SOCKET_ERROR)ErrorHandling(bind() error);if(listen(hAcptSock, 5) SOCKET_ERROR)ErrorHandling(listen() error);sendAdrSz sizeof(sendAdr);hRecvSock accept(hAcptSock, (SOCKADDR*)sendAdr, sendAdrSz);FD_ZERO(read); // 清空reads集合FD_ZERO(except); // 清空except集合FD_SET(hRecvSock, read); // 将套接字添加到reads集合FD_SET(hRecvSock, except); // 将套接字添加到except集合while(1){read_copy read;except_copy except;timeout.tv_sec 5;timeout.tv_usec 0;result select(0, read_copy, 0, except_copy, timeout);//开始监视文件描可读数集和与异常集合if(result0){if(FD_ISSET(hRecvSock, except_copy)){//使用FD_ISSET宏检查套接字是否在异常集合中。//如果是表示发生了异常事件此时会调用recv函数并指定MSG_OOB标志来接收带外数据strLen recv(hRecvSock, buf, BUFSIZE-1, MSG_OOB);buf[strLen] 0;printf(urgent message: %s \n, buf);}if(FD_ISSET(hRecvSock, read_copy)){// 如果检测到读事件strLen recv(hRecvSock, buf, BUFSIZE-1, 0);if(strLen 0){break;closesocket(hRecvSock);}else{buf[strLen] 0;printf(normal message: %s, buf);}}}}closesocket(hAcptSock);closesocket(hRecvSock);WSACleanup();return 0; }void ErrorHandling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }优先接受MSG_OOB信息4和0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设 骏域网络建设专家广州关于我们做网站

1.先写测试 2.要使程序尽快的通过(及早交付) 3.优化程序结构,尽量使程序尽量快的运行 4.不要怕修改,单元测试会保证接口的正常运行 5.能通过测试后再去重构(消除冗余,优化程序设计) 6.用尽…

网站开发服务合同印花税澄迈住房和城乡建设局网站

当下是短视频的时代,随着5g进程的加速推动,短视频已经成为了很多自媒体人变现的主要途径B站,抖音,快手,西瓜视频等等各大平台都砸钱鼓励平台创作者创作视频,因为平台流量大,我们就可以通过一些技…

郑州网站优化公司排名建设网工程信息

为什么要制定网络安全政策? 通常,公司并不认为需要制定网络安全政策。现有的政策是为了保护公司的资产,而数据也是一项资产。 网络安全政策的真正必要性很简单:网络安全并不像锁门或不偷公司笔那么简单。在许多情况下&#xff0…

swiper手机网站案例网上商城开发设计

首先笔试 笔试超级难 jsp 数据库 java 很多要百度 记得多找几个小伙伴哦~ 面试 一面: 技术面 讲一下你的项目 根据你的项目提问 面试官: 有哪些排序算法 我:冒泡 面试官: 只有一个冒泡? 我: 还有选择吧(我怕手写 &am…

婚礼摄影网站源码wordpress优化版本

1. AJAX入门 1.1 AJAX概念和axios使用 1.1.1 什么是AJAX? 1.1.2 怎么用AJAX? 引入axios.js 获取省份列表数据 1.2 认识URL 1.3 URL查询参数 1.4 常用请求方和数据提交 1.5 HTTP协议-报文 1.5.1 HTTP响应状态码 1.5.1.1 状态码:1XX(信息&#xff09…

怎么让网站自适应查建设公司年度保证金网站

-本文翻译自由Geoff H. Darling于2003年撰写的文章。尽管文章较早,但可以了解一些SOA底层原理,并可看到早期SOA研究的思路和过程,于今仍有很高借鉴价值。 摘要 本文介绍一种新型宽光谱半导体光放大器(SOA)技术&#x…

网站权限控制网站开发需要的准备

文章目录 每日一句正能量前言背景什么是理论计算机科学?为什么随机性很重要?三篇影响深远的论文Avi Wigderson在计算复杂性理论方面的贡献及其对现代计算的影响Avi Wigderson对随机性和伪随机性在计算中作用的理解及其实际应用Avi Wigderson的学术生涯和…

张槎杨和网站建设微网站功能

前文简介了Chrome存储的账密/Cookie数据:一段代码读取Chrome存储的所有账号密码和Cookie 本文再扩展介绍一下Chrome存储的其它一些隐私数据。 注:因为业务需要,简单调研了一些基本内容和存储路径,没有深入去研究,有啥…

用vue开发的网站酒店设计公司排名

教育 -人文物理-章节资料考试资料-武汉理工大学【】 第一讲测试题 1、【单选题】两种文化是指( )与( )。 A、东方文化与西方文化 B、科学文化与人文文化 C、中国文化与西方文化 D、亚洲文化与欧洲文化 参考资料【 】 2、【单选题】…

湖北省建设安全管理协会网站慈利做网站在哪里

今天编译PHP的时候遇到了几个错误,记录一下第一次编译的时候报错如下:configure: error: mcrypt.h not found. Please reinstall libmcrypt.报这个错是因为没有安装libmcrypt这个包,下载地址如下:wget ftp://mcrypt.hellug.gr/pub…

网站建设部署与发布有效期投票小程序

4034: [HAOI2015]T2 Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加…

计算机网站建设招聘贵州城市和城乡建设官方网站

BeanPostProcessors是Spring框架中的一个扩展机制,它允许开发人员在Spring容器实例化、配置和初始化Bean的过程中干预和定制化。BeanPostProcessor接口定义了两个方法:postProcessBeforeInitialization和postProcessAfterInitialization,分别…

江西建设质量安全监督网站杭州品牌网站

字幕组双语原文:如何使用RetinaNet模型构建面罩检测器英语原文:How to build a Face Mask Detector using RetinaNet Model!翻译:雷锋字幕组(李珺毅)介绍目标检测是计算机视觉中一个非常重要的领域,对于自动…

西安网站建设价格上海注册公司费用及流程

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和v3s一样,f1c200s本身也支持spi-nor flash。当然,不管是norflash,还是nandflash,都是为了能够让程序脱离sd卡,直接依靠板子上面的flash,就可以完成正常地加载和运行工作。tf…

政务微网站建设方案对网站建设展望

1、滚动到一定区域,顶部内容置换并置顶 功能: 当我向下滚动时,当关注那一行快到顶部的时候,把左侧区域的内容切换成右侧区域的内容,并置顶 原先我使用v-if来显示隐藏,发现会出现闪屏的现象,后来…

重庆网站网站建设沈阳网站建设模块

Shell用户与系统内核之间交流平台Shell类型/bin/sh/bin/bash(系统默认bash)/bin/tcsh/bin/csh/etc/shells 放置当前系统可用shell为什么需要shell编程1.减少繁琐工作的重复进行,减少错误2.提高工作效率3.事态的批量化进行Bash特点功能1.查看命令历史(1000条)history…

地方社区网站 备案制作网站中英文字体不能为

一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…

民网东莞网站建设建设平台网站协议

目录 Pod 中 init 容器 1 init 容器特点 2 使用 init 容器 Pod 中 init 容器 Init 容器是一种特殊容器,在Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 1 init 容器特点 init 容器与普通的容器非常像&#xf…

网站建设费如何入账国内网页设计欣赏

一、github登不上去问题 下载watt toolkit 下载地址:https://steampp.net/ 可以下载后加速,访问github 二、猫狗总体参考核心 B哥的博客 https://github.com/bubbliiiing/classification-keras?tabreadme-ov-file 三、CSDN很多会员才能阅读问题 根据…

jquery网站后台模板福州网站建设市场

Pyecharts 是一个用于生成各种交互式图表的 Python 图表库。它是基于开源的 Echarts 图表库构建的,Echarts 是由百度团队开发的一个使用 JavaScript 实现的开源可视化库。Pyecharts 使得在 Python 中创建复杂的图表变得更加容易,它支持多种类型的图表&am…