社区
网络编程
帖子详情
socket通信中//Recv函数接受数据的大小,如何动态改变?
Oirrm
2014-08-18 03:45:55
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
368
9
打赏
收藏
socket通信中//Recv函数接受数据的大小,如何动态改变?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Eleven
2014-08-19
打赏
举报
回复
你可以固定一个大小,循环接收到来的数据即可。
阿源是少年
2014-08-19
打赏
举报
回复
楼主可以参考这里我写的,不知道是不是你所表达的http://bbs.csdn.net/topics/390864214
hurryboylqs
2014-08-18
打赏
举报
回复
TCP的recv是需要循环接受的,不保证一次接收就能完成所有数据的,TCP是流式的协议
阿呆_
2014-08-18
打赏
举报
回复
楼主误会了吧。 recv()干的事只是将数据从socket的缓冲区复制到用户缓冲区而已。setsockopt(,SOL_SOCKET,SO_RCVBUF, 干的事是设置系统用于socket的缓冲区大小。因此你完全可以随你所想地“动态”去使用传进recv的内存块
Oirrm
2014-08-18
打赏
举报
回复
// 接收缓冲区 int nRecvBuf=32*1024;//设置为32K setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)); 之后用recv函数接受数据参数,用什么来存数据呀???
引用 2 楼 SiGoYi 的回复:
setsockopt函数可以设置缓冲区的大小,具体的楼主可以自己查查。
xian_wwq
2014-08-18
打赏
举报
回复
lz问的是不是接收数据长度如何根据需要调整? 这个长度一般是在自定义包头中定义的,解析包头后就可以确定需要接收数据的长度。
笨笨仔
2014-08-18
打赏
举报
回复
socket工作在上层,收到的是底层的消息,其长度不会超出TCP包的大小,如果你的编程有针对,应该知道数据包的最大长度,收到后马上转存处理,为何还要动态改变?
SiGoYi
2014-08-18
打赏
举报
回复
setsockopt函数可以设置缓冲区的大小,具体的楼主可以自己查查。
阿呆_
2014-08-18
打赏
举报
回复
没看懂究竟问的是什么。 好像没人规定recv传进去的buffer必须是静态数组的吧?既然这块buffer本来就可以动态分配,你还想怎么动态法?
socket
通信
之
recv
函数
recv
函数
作用:该
函数
用于从一个套接字
中
接收
数据
。 //表头文件: #include<sys/types.h> #include<sys/
socket
.h> //
函数
定义 int ret =
recv
(int __fd, void *__buf, size_t __n, int __flags) //fd:从文件描述符fd
中
读取
数据
。 //buf:用于接收
数据
的缓冲区。 //len:缓冲区长度。 //flags:指定调用方式,通常指定为0。 注意: 如果在读取的过程
中
出现
深入理解
socket
中
的
recv
函数
和send
函数
一、
函数
原型 **·**
recv
函数
用于
socket
通信
中
接收消息,接口定义如下: ssize_t
recv
(int
socket
, void *buf, size_t len, int flags) 参数一:指定接收端套接字描述符; 参数二:指向一个缓冲区,该缓冲区用来存放
recv
函数
接收到的
数据
; 参数三:指明buf的长度; 参数四:一般置为0; 返回值:失败时,返回值小于0;超时或对端主动关闭,返回值等于0;成功时,返回值是返回接收
数据
的长度。 **·**send
函数
用于
socket
通信
中
发送消息,
socket
,
recv
函数
返回值说明
1.创建
socket
int udp_
socket
=
socket
(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //IPPROTO_UDP表示UDP协议 int tcp_
socket
=
socket
(AF_INET, SOCK_STREAM, IPPROTO_TCP); //IPPROTO_TCP表示TCP协议 2.
recv
接收
数据
recv
函数
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的参数是
socket
编程
中
的
recv
函数
和send
函数
1、
recv
()
函数
recv
()
函数
用于
socket
通信
中
接收消息 #include <sys/types.h> #include<sys/
socket
.h> ssize_t
recv
(int sockfd, void *buff,size_t nbytes,int flags); sockfd:文件描述符; buff:指向一个缓冲区,用来存放接收的
数据
...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章