CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

SOCKET编程,接收数据不完整?

楼主citycity(逝者如斯)2002-06-14 08:47:54 在 VC/MFC / 基础类 提问

我用recv()接收数据,可是总是不完整,而如果我在前面加入Sleep(500)就没有问题了,请问这是怎么回事?有没有更好的解决办法? 问题点数:100、回复次数:6Top

1 楼vc_boy()回复于 2002-06-14 08:59:11 得分 0

自定义数据包结构,在每个包的结尾放上一个标志。在接收时对此标志进行检查,如果没有此标志就再接收。Top

2 楼atling()回复于 2002-06-14 09:00:33 得分 30

tcp是流方式的,recv()返回接收到的字符数,你检查不够就再接收一次。Top

3 楼yangyb1120(Monkey)回复于 2002-06-14 09:00:43 得分 10

数据还没准备好,你能接受什么?你可以用一个循环看数据准备好了没有Top

4 楼slimak(破肚虫)回复于 2002-06-14 09:11:51 得分 30

这是你的逻辑流程没有处理对  
  你可以用Event(事件)+计算Byte来确保数据的接受  
   
      typedef   struct{  
          DWORD   dwDataLength;     //告诉接受方接下来要发过来的数据大小  
          TCHAR   szSynaMark[8];   //同步标志  
          ...  
        }_PACKET1;  
  把第一个数据包发过去然后等待对方确认收到了第一个数据包  
  然后分多次或一次发要传输的数据包  
        typedef   struct{  
          DWORD   dwDataLength;     //告诉接受方本次发过来的数据大小  
          TCHAR   szSynaMark[8];   //同步标志  
          ...  
          TCHAR   szData[DATA_SIZE];   //数据  
        }_PACKET2  
   
  接受的时候用dwDataLength来判断是否收完,如果数据很大  
  那么收到一定程度就可以用一个线程去处理收到的数据.  
   
  Top

5 楼taianmonkey()回复于 2002-06-14 09:16:32 得分 0

我所遇到的客观因素:  
        所用的5类线是非屏蔽的!  
        换线后就没什么事了!  
        不过那是有的数据接收不到!Top

6 楼alidiedie(阿里)回复于 2002-06-14 11:10:48 得分 30

试试WasyncSelectEVENT,在这个函数中可以指定自己感兴趣的下一事件,可以指定FD_READ.并自定义消息响应函数.这样当缓冲区中有数据就回通知你,直到没数据.  
  #defin   wm_myread   wm_user+101//自定义消息  
   
  afx_msg   lresult   onmyread(wparam,lparam);//自定义消息响应函数  
  on_message(wm_myread,onmyread);//自己插入消息映射  
   
  //连接成功后,调用  
  wsaynseletnextevent(hwnd,wm_myread,0,0,fd_read);  
   
   
  afx_msg   lresult   onmyread(wparam,lparam)  
  {读取数据  
  }  
   
   
   
  Top

相关问题

  • Socket编程:
  • socket编程
  • socket编程!!!
  • socket编程!!!
  • SOCKET编程
  • SOCKET编程
  • socket编程请教!
  • 有关socket编程
  • SOCKET 编程问题?
  • Socket编程问题!

关键词

  • 数据
  • 函数
  • 消息
  • 接收
  • dwdatalength
  • onmyread
  • 数据包
  • 自定义
  • myread
  • 标志

得分解答快速导航

  • 帖主:citycity
  • atling
  • yangyb1120
  • slimak
  • alidiedie

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo