Socket->ReceiveBuf()问题

nkzy_1024 2007-10-09 11:38:46
我现在想用Socket->ReceiveBuf()接收端口传送过来的数据,我知道长度是9120个字节.我在ClientSocket1Read事件下Socket->ReceiveBuf() 可是总是收到的为4380个字节.请问是怎么回事啊!
我是个新手,盼望各位的回答! 我用的非堵塞模式.

我看有人说这样可以:根据网络状态.可能分几个包发送.可以这样int len = 0(全局)
int templen;
do{ templen =Socket->ReceiveBuf();len+= templen;}while (len>=8192)
但我试了不行啊,len是不是=Socket->ReceiveLength()啊?
请大家指点下!!
...全文
309 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkxie 2007-10-16
  • 打赏
  • 举报
回复
我遇到过同样的问题,这里:
http://topic.csdn.net/u/20070713/17/4fa85fae-0d95-470a-a89f-65f9824d86a8.html
guanyueguan 2007-10-12
  • 打赏
  • 举报
回复
在接收事件中最好不要用循環接收。
serain 2007-10-12
  • 打赏
  • 举报
回复
len=Socket->ReceiveLength();
laowang2 2007-10-09
  • 打赏
  • 举报
回复
mark
FFSB 2007-10-09
  • 打赏
  • 举报
回复
char buf[9120];
int size = 0;
do{ len = Socket- >ReceiveBuf(buf+size,sizeof(buf)-size);
if(len > 0)
size += len;
}while(size <sizeof(buf));
我不懂电脑 2007-10-09
  • 打赏
  • 举报
回复
TCP是流式的,一次发送的数据可能分几次才能收到。所以必须把多次收到的数据连起来
bbb16517 2007-10-09
  • 打赏
  • 举报
回复
你发包的时候转换网络字节顺序没错吧,我以前丢包有过这种情况,两边的字节顺序转换不对称。

仅供参考,我也是菜菜。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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