社区
Linux/Unix社区
帖子详情
Linux下怎么用read或recv函数完全接收socket发来的数据?
tiger波波
2006-03-10 05:38:57
int recv(int sockfd, void* buffer, int len, unsigned int flags)
对方发来的数据是一包一包来的,就是说对方发送一个完整的信息时,多次调用send()函数,我怎么才能全部接收这些send()发来的数据呢?
...全文
975
3
打赏
收藏
Linux下怎么用read或recv函数完全接收socket发来的数据?
int recv(int sockfd, void* buffer, int len, unsigned int flags) 对方发来的数据是一包一包来的,就是说对方发送一个完整的信息时,多次调用send()函数,我怎么才能全部接收这些send()发来的数据呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lanying
2006-03-10
打赏
举报
回复
接收的时候根据报文长度之类的信息,不断调用recv,直到接收完毕为止
lanying
2006-03-10
打赏
举报
回复
TCP是面向流的协议,没有边界的,需要你自己定义。
例如可以在报头加个长度字段,或者在报文的末尾添加结束符
OverIsOver
2006-03-10
打赏
举报
回复
tcp还是udp呢?udp的话要判断是否丢包了
每次收包的时候,把收到的数据放到另一个临时缓冲区里
深入理解
socket
中的
recv
函数
和send
函数
一、
函数
原型 **·**
recv
函数
用于
socket
通信中
接收
消息,接口定义如下: ssize_t
recv
(int
socket
, void *buf, size_t len, int flags) 参数一:指定
接收
端套接字描述符; 参数二:指向一个缓冲区,该缓冲区用来存放
recv
函数
接收
到的
数据
; 参数三:指明buf的长度; 参数四:一般置为0; 返回值:失败时,返回值小于0;超时或对端主动关闭,返回值等于0;成功时,返回值是返回
接收
数据
的长度。 **·**send
函数
用于
socket
通信中发送消息,
recv
函数
linux
,
linux
下调用
recv
函数
,死循环在
recv
函数
里面,什么原因?
linux
下调用
recv
函数
,死循环在
recv
函数
里面,什么原因?
linux
服务器,在连接只有1000个时候,一切正常,到连接到2000以上的时候,就死循环在
recv
函数
里面,cpu占用率很高,因为
recv
是系统
函数
,也不知道他在里面干什么。程序是epoll实现的。 有谁碰到过类似问题么?或者是能指导一个努力的方向? 回1楼:不是建立连接的时候死循环,而是跑了一段时间后,在调用
recv
函数
的时候...
【
Socket
网络编程】17.
recv
()
函数
详解
recv
函数
int
recv
(
SOCKET
s, char *buf, int len, int flags); 参数说明 第一个参数指定
接收
端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放
recv
函数
接收
到的
数据
; 第三个参数指明buf的长度;第四个参数一般置0。 同步
Socket
的
recv
函数
的执行流程 当应用程序调用
recv
函数
时:
recv
先等待 SOCKE...
linux
下的
socket
的
read
,
socket
网络编程中
read
与
recv
区别
1、
read
与
recv
区别
read
原则:
数据
在不超过指定的长度的时候有多少读多少,没有
数据
则会一直等待。所以一般情况下:我们读取
数据
都需要采用循环读的方式读取
数据
,因为一次
read
完毕不能保证读到我们需要长度的
数据
,
read
完一次需要判断读到的
数据
长度再决定是否还需要再次读取。
recv
原则:
recv
中有一个MSG_WAITALL 的参数:
recv
(sockfd, buff, buf...
linux
_
socket
网络套接字
函数
(TCP通信)-
socket
函数
-bind
函数
-listen
函数
-accept
函数
-connect
函数
-send
函数
-
recv
函数
socket
函数
bind
函数
listen
函数
accept
函数
connect
函数
send
函数
recv
函数
首先将整个结构体清零,然后设置地址类型为AF_INET,网络地址为INADDR_ANY,这个宏表示本地的任意IP地址,因为服务器可能有多个网卡,每个网卡也可能绑定多个IP地址,这样设置可以在所有的IP地址上监听,直到与某个客户端建立了连接时才确定下来到底用哪个IP地址,端口号为6666。客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章