linux内核sock_sendmsg,Linux系统调用之send/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:本地连接已关闭0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值