vc recv (SOCKET s, char FAR* buf, int len, int flags); 遇到00问题

dgxlaen 2013-05-23 12:00:55
怎么在遇到接收到00时能把数据接收完全,老是少一部分?求高手解决!
...全文
425 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻X 2013-06-07
  • 打赏
  • 举报
回复
其实用char真心没关系啊,反正大家都是1字节。关键是你为啥你收到00就结束了。 最关键的是你得自定义协议,知道自己要接受多少字节才可以。字节长度一般都放在通信字节首2位,或者首4位。
hxfjb 2013-06-07
  • 打赏
  • 举报
回复
协议本身可以让你收到数据,但是收到多少数据你自己进行出来,是需要你自己的协议的。
所以应该是这样的东西:
int iDataLen;

//接收4个字节的数据
recv(s, &iDataLen, 4, 0);
然后一直接收,直到收到iDataLen的数据;
while(1)
{
recv();
}
youngwolf 2013-06-05
  • 打赏
  • 举报
回复
如果你按strlen来确定接收长度,神仙也解决不了,不用说BYTE[], 你的代码已经与网络编程无关了(仅仅是一个c语言的问题),可以贴出来,非常简单的问题。
youngwolf 2013-06-05
  • 打赏
  • 举报
回复
网络编程中没有\0这个问题,没有人关心它,用BYTE[]和用char[],或者void*并不区别。 只有涉及到字符串操作的crt,比如strlen才会有此问题。
追蜗牛的少年 2013-06-05
  • 打赏
  • 举报
回复
一可以使用异步连接,二使用同步连接的话,可以用一个timer一直循环接收对象
angelbrian_su 2013-06-05
  • 打赏
  • 举报
回复
buffer用byte类型。
判断下载完成用recv 或者判断文件长度和下载量
dgxlaen 2013-05-23
  • 打赏
  • 举报
回复
用BYTE[]怎么用呀,初学者,不太会,能给个例子吗?
Xiaona_Song 2013-05-23
  • 打赏
  • 举报
回复
不能把数据当字符中,要按流处理,根据recv的返回值来处理数据,这有很多socket例子,看别人怎样处理的: http://download.csdn.net/detail/geoff08zhang/4571358
smwhotjay 2013-05-23
  • 打赏
  • 举报
回复
楼上正解
Eleven 2013-05-23
  • 打赏
  • 举报
回复
用BYTE[]
dgxlaen 2013-05-23
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
用BYTE[]
BYTE[]怎么用,请指教!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧