免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5373 | 回复: 21
打印 上一主题 下一主题

socket问题,急!急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-16 18:59 |只看该作者 |倒序浏览
现象:对方作为socket的server端在接到我的请求后即向我不断发送大量数据(不需要我进行响应),他可能是循环发送,一个劲的向缓冲区压数据,我这边目前采用的是循环接收,问题是有时能收到数据,有时收不到,延时不好加,有没有一种方式来检测缓冲区是否有数据,有数据在收,否则,等待,这样使用哪种方式好

论坛徽章:
0
2 [报告]
发表于 2003-08-16 19:20 |只看该作者

socket问题,急!急!

循环读,读到数据,则有,没有读到,则没有,读到的都是流信息需要自己进行数据块分块处理。

论坛徽章:
0
3 [报告]
发表于 2003-08-16 19:54 |只看该作者

socket问题,急!急!

可以从客户端去循环取,如果取不到则延时等待。
   不过这样做稳定性和正确性不太好。
   最好是用比较成熟的传输中间件。

论坛徽章:
0
4 [报告]
发表于 2003-08-16 21:13 |只看该作者

socket问题,急!急!

检测缓冲区是否有数据,有数据在收,否则,等待???

这个阻塞型socket不是可以吗

如果想控制等待时间那么可以使用select函数实现

论坛徽章:
0
5 [报告]
发表于 2003-08-16 21:39 |只看该作者

socket问题,急!急!

你的这种问题是典型的数据传输的同步问题,在大量数据的收发当中尤其突出,所以windows为我们提供了5种传输模型:select模型、WSAAsyncSelect、(还有个叫什么名字?我忘了)IO重叠、完成端口

你可以随便的选一种使用,具体的方法请你参考MSDN吧!

论坛徽章:
0
6 [报告]
发表于 2003-08-17 18:00 |只看该作者

socket问题,急!急!

首先感谢各位。使用select好像只是对socket描述符进行可读写检查,不一定能够进行判断是否有数据,recv函数默认的就是阻塞方式吧,在写code时,我使用了select和recv的默认方式,但还是第一次只能接收很少的数据,而第二次循环收到的数据为空,随后收到的数据都为空,是不是收数据的时候已经阻塞

论坛徽章:
0
7 [报告]
发表于 2003-08-17 19:32 |只看该作者

socket问题,急!急!

而第二次循环收到的数据为空,随后收到的数据都为空???

我想这可能是你没有对select用法认真研究的原因吧
select收到的数据为空 是不是端口已关闭

论坛徽章:
0
8 [报告]
发表于 2003-08-17 19:45 |只看该作者

socket问题,急!急!

更详细的信息可以看看select的man或是msdn帮助

我这两个都没有 所以没有办法给你更深的回答

论坛徽章:
0
9 [报告]
发表于 2003-08-17 23:07 |只看该作者

socket问题,急!急!

哪是不是就是说select就是对缓冲区进行检测

论坛徽章:
0
10 [报告]
发表于 2003-08-17 23:08 |只看该作者

socket问题,急!急!

yes
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP