socket问题,急!急!

发布于 2022-06-11 03:18:34 字数 149 浏览 833 评论 9

现象:对方作为socket的server端在接到我的请求后即向我不断发送大量数据(不需要我进行响应),他可能是循环发送,一个劲的向缓冲区压数据,我这边目前采用的是循环接收,问题是有时能收到数据,有时收不到,延时不好加,有没有一种方式来检测缓冲区是否有数据,有数据在收,否则,等待,这样使用哪种方式好

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

爱你不解释 2022-06-22 06:16:38

yes

久随 2022-06-22 04:19:41

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

凉薄对峙 2022-06-22 03:18:03

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

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

你列表最软的妹 2022-06-22 02:34:02

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

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

爱,才寂寞 2022-06-21 20:08:59

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

海拔太高太耀眼 2022-06-20 12:27:04

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

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

眼角的笑意。 2022-06-18 21:58:24

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

这个阻塞型socket不是可以吗

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

从来不烧饼 2022-06-17 03:59:04

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

梦里兽 2022-06-15 00:31:34

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文