采用第三方工具处理网络流的时候,会面临一些问题,归纳如下:
1、二进制流的打开
很简单,使用popen、pclose即可。Windows平台下则采用_popen, _pclose。头文件都是stdio.h
例如:
2、二进制流的读取
依然很简单,使用大家都不陌生的fread就行啦~ 不过,这里有个trick:
fread的函数原型为:
这里,网友提供了一个很好的方法,并且进行了初步的评测:
"这个问题解决了,我将fread中第二个参数和第三个参数交换了以下位置,既:nReturn = fread(buf,1,1024,file); 这样,读取元素的长度为1字节,读取1024个元素,这样nReturn的值便是实际读取的字节数。这个想法受益于一个网友的帖子,提醒了我。
我测试过了,nReturn = fread(buf,1,1024,file)与nReturn = fread(buf,1024,1,file);在操在27087718字节长的二进制文件时,测试了150次,程序运行效率基本相同,前者比后者平均节省时间大约2ms。 "
通常我总是让nitem=1,所以返回值总是0或者1。为了获得真正读入的字节数,可以让block_len总是为1,nitem为期望读入的字节数。好方法!关于性能,可以再亲自测试一下。
3、获取二进制流的长度
基于2中的讨论,很容易获得二进制长度,例如:
4、如何探测文件流结束
如3中所示,调用函数feof()咯~
以一个例子总结一下,该例子利用curl来读取baidu首页的二进制流并以1024字节为单位逐次打印到屏幕上:
分享到:
相关推荐
然后你的问题中说每次读取两个字节,但是每个ASCII码的值只是用一个字节来表示的,所以我一个字节一个字节地读取,一次循环中读取两次,但是文件的长度是未知的,可能读取完一个字节之后就到文件末尾了,再读的话就...
有一个二进制文件,具体格式未知。但知道它由两部分组成:1.文件头,2.数据块。其中文件头长度不可能超过256个字节。而数据块部分全部是单精度浮点数,数值精度0.01,数值范围-100.00~100.00,但是数据块尾部有部分...
猕猴桃消息格式Kiwi是一种基于模式的二进制格式,用于有效地编码数据树。 它的灵感来自Google的格式,但更简单,编码更紧凑,并且对可选字段的支持更好。 目标: 常用值的有效编码:可变长度编码用于数字值,其中较...
若为值n,则除了读取Report.dat外还将读取(n-1)个最新.PRP历史分笔成交数据文件*/ %let HqmbFilesToRead=2; /*请确认要转换的数据,在下面语句的%后加*变为注释取消转换*/ /*沪市*/ %FxjData2FinData(sh,dm,FinData);...
二进制比较,主要用于产品首件确认时,源hex文件与从产品中读出的文件进行比较。(注意未用字节的填充值如果不同,将会认为有差别) 5. 串口调试器 可以通过串口接收/发送数据,作为普通的串口调试器,可以手动...
通讯时可以选择二进制、文本方式显示;可设置自动滚屏;设置最大显示行数; 可以选择多命令交互方式通讯,且可以作为主发方、从发方;主发时可以循环发送所选命令;从发时可以定义自动应答命令,即接收到表中所列...
这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移...
通过二进制Socket发送和接收二进制数据 18.14节. XMLSocket通信 第十九章. XML(607) 19.1节. 加载一个XML文件 19.2节. 通过E4X语法遍历XML文档 19.3节. 使用正则表达式在E4X中进行查询 19.4节. 添加一个XMLList到...
这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 27 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的...
o 3.10 我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构域的对齐方式? o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? ...
4、修正“IP_10进制转IP”与“IP_16进制转IP”命令反向的问题,感谢易友[@humanbean ]反馈。 5、改善“网页_访问”死循环代码,感谢易友[@67564226]反馈。 6、优化“文本_取随机数字”精简代码,提高执行效率,感谢...
1.完善 “进制_十到二” 取消长度不足8位自动会补零,请根据需要补零 感谢 小爬虫 的提醒 2.完善 类_ODBC数据库,“读文本”参数二的备注,改为 索引从0开始 感谢 阿蒙 的提醒 3.完善 类_ODBC数据库 ,“连接Access...
部数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域 的对齐方式? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.11 为什么sizeof 返回的值大于结构的期望值, 是不是尾部有填充? . . ...
Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。 在初始化过程中,javax.servlet.Servlet接口的init()...
一)MD——建立子目录 1.功能:创建新的子目录 2.类型:内部命令 3.格式:MD[盘符:][路径名]〈子目录名〉 ...(2)选用/B参数,为二进制比较模式; (3)选用/C参数,将大小写字符看成...