5、EAGAIN 此操作会令进程阻断, 但参数s 的socket 为不可阻断.

6、ENOBUFS 系统的缓冲内存不足

7、ENOMEM 核心内存不足 EINVAL 传给系统调用的参数不正确.

附属数据msg_control结构 

控制信息头部本身由下面的C结构定义:

 

struct cmsghdr {

    socklen_t cmsg_len;

    int       cmsg_level;

    int       cmsg_type;

/* u_char     cmsg_data[]; */

};

其成员描述如下:

 

成员             描述

cmsg_len        附属数据的字节计数,这包含结构头的尺寸。这个值是由CMSG_LEN()宏计算的。

cmsg_level      这个值表明了原始的协议级别(例如,SOL_SOCKET)。

cmsg_type       这个值表明了控制信息类型(例如,SCM_RIGHTS)。

cmsg_data       这个成员并不实际存在,用来指明实际的额外附属数据所在的位置。

用sendmsg来传递数据程序实例

 

/*sendmsg.c*/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <errno.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

 

int main(int argc,char *argv[])

{

    int ret;     /* 返回值 */

    int sock[2];    /* 套接字对 */

    struct msghdr msg;

    struct iovec iov[1];

    char send_buf[100] = "it is a test";

    struct msghdr msgr;

    struct iovec iovr[1];

    char recv_buf[100];

 

    /* 创建套接字对 */

    ret = socketpair(AF_LOCAL,SOCK_STREAM,0,sock);

    if(ret == -1){

        printf("socketpair err\n");

        return 1;   

    }

 

    /* sock[1]发送数据到本地主机  */

    bzero(&msg, sizeof(msg));

    msg.msg_name = NULL;        /* void*类型 NULL本地地址*/

    msg.msg_namelen = 0;

    iov[0].iov_base = send_buf;

    iov[0].iov_len = sizeof(send_buf);

    msg.msg_iov = iov;//要发送或接受数据设为iov

    msg.msg_iovlen = 1;//1个元素

 

    printf("开始发送数据:\n");

    printf("发送的数据为: %s\n", send_buf);

    ret = sendmsg(sock[1], &msg, 0 );

    if(ret == -1 ){

        printf("sendmsg err\n");

        return -1;

    }

    printf("发送成功!\n");

 

    /* 通过sock[0]接收发送过来的数据 */

    bzero(&msg, sizeof(msg));

    msgr.msg_name = NULL;   

    msgr.msg_namelen = 0;

    iovr[0].iov_base = &recv_buf;

    iovr[0].iov_len = sizeof(recv_buf);

    msgr.msg_iov = iovr;

    msgr.msg_iovlen = 1;

上一篇:关心下一代工作委员会工作心得体会
下一篇:<activity-alias>标签详解和使用

havehas的用法

microsoft.xmlhttp组件的用法和属性

SendMessage函数用法详解及消息详解

FileSystemWatcher的C#的FileSystemWatcher用法

python中yield的用法举例

@Deprecated注解功能用法不建议使用废弃的

explicit c++中的作用和用法

羟肟类萃取剂对嗜酸氧化...

试析多元智能理论茬体育...

信息技术茬旅游专业教學...

基于中频信号的家用治疗...

PF--1415反击式破碎机箱体设计开题报告

浅议体态律动在小学音乐课堂教学中的运用

旅游英语推进邢台市旅游...

摩羯座运势2022,摩羯座...

浅谈岗位廉洁教育的方法与途径【3858字】

湖南长沙市生育津贴政策...