怎样判断数据读取完毕? 我在CAsyncSocket的OnReceive函数中读取数据。我并不想一次将数据读取完全,因为不能确定数据的大小。我多次用Receive来读取数据,怎样判断数据读取完毕? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.自己编协议,控制长度。2.判断receive返回值是否为WSAEMSGSIZE,说明还有数据。 typedef PKHEAD{ DWORD dwType; DWORD dwLength;}PKHEAD;先读一个sizeof(PKHEAD),根据得到的dwLength读后面的数据。 “我并不想一次将数据读取完全,因为不能确定数据的大小”?????我不大懂也,Receive函数中可以确定你接受到了多少数据啊,为什么你不要一次把他都取完?不是没事找事么?估计你的情况是,发送数据的时候没有发送完整的一包,所以你认为Receive函数不能确定过来的数据时不是完整的,这也好办啊,在你认为是完整的一包的时候,在末尾添加一个数据中不可能存在的结尾标识,Receive函数每次都要检查最后几个数据是否有结尾标志,有的话,就认为接收玩毕。最后谈一谈结尾标志怎么定,对于字符串,可以使用'\0'作为结尾标志,因为字符串中不可能出现'\0',如果你是不确定的数据的话,就要稍微麻烦一点了,不能再用'\0'作为结尾标志了,因为你报文中可能有'\0',我认为你可以在每次发送数据的末尾都添加一个标识,比如0x55,如果这包数据是完整的一包,可以把标识改城0xaa,接收的时候判断一下末尾,如果为0x55,则把这个末尾标志去掉,如果是0xaa,则现在一包接收完毕了很多规约都是这样的思想,好好学学吧 急!崩溃!vc2005 向txt文件写入UNICODE字符乱码! 在执行.ocx文件时,怎样得到.ocx文件自身的路径? 请问是否可以在VIEW中生成CDialogBar并显示之? 关于多文档窗口 这样的控件怎么做?急 在sdi工程中添加了一个新的视图后。怎样切换新视图和老视图! 怎么格式化? 如何找到netmeeting中其他人的ip和端口 请问从哪里下载打开pdf文件的软件? 关于画wav图的 如何动态修改系统菜单? 谁知道“打印控制中心”应该如何来实现啊????还有不同文档的打印拼图怎么做哦???谢谢大家
2.判断receive返回值是否为WSAEMSGSIZE,说明还有数据。
DWORD dwType;
DWORD dwLength;
}PKHEAD;
先读一个sizeof(PKHEAD),根据得到的dwLength读后面的数据。
“我并不想一次将数据读取完全,因为不能确定数据的大小”?????我不大懂也,Receive函数中可以确定你接受到了多少数据啊,为什么你不要一次把他都取完?不是没事找事么?估计你的情况是,发送数据的时候没有发送完整的一包,所以你认为Receive函数不能确定过来的数据时不是完整的,这也好办啊,在你认为是完整的一包的时候,在末尾添加一个数据中不可能存在的结尾标识,Receive函数每次都要检查最后几个数据是否有结尾标志,有的话,就认为接收玩毕。最后谈一谈结尾标志怎么定,对于字符串,可以使用'\0'作为结尾标志,因为字符串中不可能出现'\0',如果你是不确定的数据的话,就要稍微麻烦一点了,不能再用'\0'作为结尾标志了,因为你报文中可能有'\0',我认为你可以在每次发送数据的末尾都添加一个标识,比如0x55,如果这包数据是完整的一包,可以把标识改城0xaa,接收的时候判断一下末尾,如果为0x55,则把这个末尾标志去掉,如果是0xaa,则现在一包接收完毕了很多规约都是这样的思想,好好学学吧