关于TCP大数据包接受的问题

970361 2003-10-16 06:40:40
我要接受一个比较大的TCP数据包,我用的是SELECT方法,如果当有数据到来的时候select返回,可以接受,可是如果这个数据很大,不能够一次read完,那么我是紧接着就地一个次read呢,还是继续call select,等 下一次select返回?
谢谢
...全文
102 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flagfly 2003-10-17
  • 打赏
  • 举报
回复
我认为都可以,read返回-1,证明没有数据再select
醉马不肖 2003-10-17
  • 打赏
  • 举报
回复
数据里设置首尾标志
studyingpersons 2003-10-17
  • 打赏
  • 举报
回复
那么就用异步选择WSAAsyncSelect吧!!!
通过网络事件激发消息,然后再用消息响应函数处理套接字I/O操作,这样效率也挺高的!!
970361 2003-10-17
  • 打赏
  • 举报
回复
本来也想在数据尾设置结束标志,可是这样的结束标志很可能和数据的内容相同,如果用太长的标志有有些浪费,所以我用的是记录数据长度的办法
970361 2003-10-17
  • 打赏
  • 举报
回复
哦,知道啦,谢谢各位,我先测试一下看看,因为read会阻塞,所以还是接着用select
sevencat 2003-10-17
  • 打赏
  • 举报
回复
有了select还要WSAAsyncSelect干吗?
sevencat 2003-10-17
  • 打赏
  • 举报
回复
当然是下次select再读啦。
xiaohyy 2003-10-16
  • 打赏
  • 举报
回复
>>那么我是紧接着就地一个次read呢,还是继续call select,等 下一次select返回?

call select
970361 2003-10-16
  • 打赏
  • 举报
回复
这是一个跨平台的程序,不能用WSAEventSelect。
studyingpersons 2003-10-16
  • 打赏
  • 举报
回复
还用就是TCP通信不是随便传输一个无格式的数据包,无论该数据包是否定长,他都应该有一个通信标准!!
studyingpersons 2003-10-16
  • 打赏
  • 举报
回复
干吗不用异步选择呢?
或者用WSAEventSelect呢?

18,356

社区成员

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

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