社区
Linux/Unix社区
帖子详情
在epoll中使用recv()问题
gdstx
2013-06-08 04:43:42
比如我要接收10个字节, 但该客户端只发送了5个字节, 为了等待剩下的数据, 我采用了超时等待, 但这也同时阻塞了其他用户.
请问该如何处理?
...全文
177
3
打赏
收藏
在epoll中使用recv()问题
比如我要接收10个字节, 但该客户端只发送了5个字节, 为了等待剩下的数据, 我采用了超时等待, 但这也同时阻塞了其他用户. 请问该如何处理?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heartlesstoanyone
2013-06-14
打赏
举报
回复
把你的socket改为非阻塞的。
空的
2013-06-09
打赏
举报
回复
线程处理,只阻塞单个线程~~
gdstx
2013-06-08
打赏
举报
回复
while(true) { int nRet= epoll_wait(); for(i=0; i<nRet; i++) { if(EPOLLIN) { //每次recv()要接收10个字节 } } }
深入了解几种IO模型(阻塞非阻塞,同步异步)
一般来说,Linux下系统IO主要就是通过以下几个函数open(),close(),read(),write(),send(),
recv
(),lseek(),今天就以
recv
()为例来介绍下IO模型
中
的同步异步,阻塞非阻塞的区别。 先说阻塞与非阻塞的区别,
recv
()函数默认是阻塞的,什么是阻塞呢?就是当你调用
recv
()函数时,整个进程或者线程就等待在这里了,直到你
recv
的fd的所有信息都被s...
java socket
recv
乱码_当
recv
buf已经有数据时,tcp socket
recv
将返回“资源暂时不可用”...
我
使用
epoll
实现TCP套接字通信来监视所有客户端事件,只有一个线程处理for循环
中
的所有客户端 . 每个套接字都是非阻塞的 .现在我刚遇到
问题
,当客户端发送的数据超过MTU时,意味着几个分片包,服务器总是无法完全读取所有数据 . 如下所示,我首先阅读头部,从头部获取pdu len,然后阅读pdu部分 .
问题
是虽然我成功地阅读了头部,紧跟着pdu
recv
(),但它总是多次返回EAGAIN . ...
socket网络通信基础
轻松入门socket网络通信
网络编程-socket通信(二)
socket通信(二) 分包、粘包 TCP虽然可以保证顺序不变,但是依然可能会发生分包和粘包的
问题
: 分包:发送一个包”helloworld“,但对方却收到了两个包”hello“和”world“ 粘包:和分包相反
recv
()函数参数需要指定接收的字节长度,但是实际开发
中
是不知道对方发的消息内容有多少个字节,所以一般就是设置为buffer的长度,这就会导致出现粘包和分包的
问题
解决方法:自定义一份协议规定 报文长度+报文内容:1010helloworld。报文长度采用ascii码(十进制)或者二
自研TCP测试工具,对比
epoll
与 io_uring 的性能
本文章通过手写 tcp 测试工具,来对比
epoll
与 io_uring 的性能,并给出完整代码
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章