博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统调用之send/sendto/sendmsg函数解析
阅读量:4037 次
发布时间:2019-05-24

本文共 849 字,大约阅读时间需要 2 分钟。

【send/sendto/sendmsg系统调用】 

  
功能描述:

发送消息。send只可用于基于连接的套接 字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。

 

 

 

to:指向存放接收端地址的区域,可以为NULL。

tolen:以上内存区的长度,可以为0。
msg:指向存放发送消息头的内存缓冲,结构形态如下

struct msghdr {

    void         *msg_name;  

socklen_t     msg_namelen;  

    struct iovec *msg_iov;      
    size_t        msg_iovlen;   
    void         *msg_control;  
    socklen_t     msg_controllen;
    int           msg_flags;    
};

可能用到的数据结构有

struct cmsghdr {

    socklen_t cmsg_len;   
    int       cmsg_level; 
    int       cmsg_type;  
  
};

返回说明: 
成功执行时,返回已发送的字节数。失败返回-1,errno被设为以下的某个值 
EACCES:对于Unix域套接字,不允许对目标套接字文件进行写,或者路径前驱的一个目录节点不可搜索
EAGAIN,EWOULDBLOCK: 套接字已标记为非阻塞,而发送操作被阻塞
EBADF:sock不是有效的描述词
ECONNRESET:连接被用户重置
EDESTADDRREQ:套接字不处于连接模式,没有指定对端地址
EFAULT:内存空间访问出错
EINTR:操作被信号中断
EINVAL:参数无效
EISCONN:基于连接的套接字已被连接上,同时指定接收对象
EMSGSIZE:消息太大
ENOMEM:内存不足
ENOTCONN:套接字尚未连接,目标没有给出
ENOTSOCK:sock索引的不是套接字
EPIPE:本地连接已关闭

转载地址:http://licdi.baihongyu.com/

你可能感兴趣的文章
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>