当前位置:  技术问答>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)
谢谢!

|
。。。 不知道楼主在意淫什么。

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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 知道TCP/UDP的包头,如何判断其应用层协议类型,struct tcphdr和 struct udphdr结构中那个变量能判断应用层协议类型。
  • 如何识别应用层协议???比如http,ftp,dns等
  • 新手问几个应用层实现的问题
  • linux C/C++应用层的开发
  • Java 数据库应用层 JDAL
  • 应用层组件框架 Brix
  • PPPD的应用层程序、、??
  • linux应用层如何select底层的中断
  • 应用层直接使用网络层
  • 输入子系统应用层设计迷惑
  • 底层硬件驱动如何调用应用层的回调函数,求指点!
  • 如何在应用层屏蔽 8259 键盘中断?
  • 用hook 函数,抓到了应用层的包,如何分析
  • 应用层malloc内存后,再free的话,内存不释放,而是在exit时释放,这个谁知道是怎么回事?
  • linux应用层调用kernel接口函数问题。
  • 问个问题,在平台设备(platform_driver)注册以后,在应用层如何调用呢?
  • Linux下的基于应用层协议的防火墙。
  • 应用层可以用signal发送消息通知其他进程,如果是想广播通知的话,怎么办?
  • 请教:如何能实现从内核层调用应用层的程序
  • 驱动程序(模块)怎样与应用层交互呀?也就是应用程序怎样控制驱动程序?让其做什么它就做什么。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3