当前位置: 技术问答>linux和unix
应用层数据发送到传输层怎么样转化为struct msghdr结构
来源: 互联网 发布时间:2017-02-27
本文导语: 各位高手 我想问一下应用层发送数据到下面的协议栈首先是到达的套接口层,发送数据首先调用sendto(int, fd, void __user *, buff, size_t, len,unsigned, flags, struct sockaddr __user *, addr,int, addr_len)函数,比如说我想在传...
各位高手 我想问一下应用层发送数据到下面的协议栈首先是到达的套接口层,发送数据首先调用sendto(int, fd, void __user *, buff, size_t, len,unsigned, flags, struct sockaddr __user *, addr,int, addr_len)函数,比如说我想在传输一个G的文件时,数据就已经是struct msghdr结构了,我想问一下,这1G的数据是怎么样转化成struct msghdr结构的!!再次谢谢您的时间!buff, size_t, len,unsigned, flags, struct sockaddr __user *, addr,int, addr_len)
谢谢!
谢谢!
|
。。。 不知道楼主在意淫什么。
这是三个发送数据的接口,通用的,无论TCP/UDP,都可以用。
sendmsg比较特殊,它发送的struct msghdr结构体:
其中msg_iov是struct iovec结构体数组,存储真正的数据段和每一段的长度,msg_iovlen是数组元素个数。
SYNOPSIS
#include
#include
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
这是三个发送数据的接口,通用的,无论TCP/UDP,都可以用。
sendmsg比较特殊,它发送的struct msghdr结构体:
The definition of the msghdr structure follows. See recv(2) and below for an exact description of its fields.
struct msghdr {
void *msg_name; /* optional address */
socklen_t msg_namelen; /* size of address */
struct iovec *msg_iov; /* scatter/gather array */
size_t msg_iovlen; /* # elements in msg_iov */
void *msg_control; /* ancillary data, see below */
size_t msg_controllen; /* ancillary data buffer len */
int msg_flags; /* flags on received message */
};
其中msg_iov是struct iovec结构体数组,存储真正的数据段和每一段的长度,msg_iovlen是数组元素个数。
The iovec structure shall be defined as described in .
The header shall define the iovec structure that includes at least the following members:
void *iov_base Base address of a memory region for input or output.
size_t iov_len The size of the memory pointed to by iov_base.
|
数据分片。在协议栈中有。代码具体在什么地方。要 grep 一下。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。