毕业论文

当前位置: 毕业论文 > 范文 >

socketpair()套接字用法例子和理解(2)

时间:2021-03-09 13:00来源:辣文论文
printf(Write success, pid: %d\n, getpid()); } else if(pid == 0) { //关闭另外一个套接字 close(socket_pair[0]); read(socket_pair[1], buf, sizeof(buf)); printf(Read result: %s, pid: %d\n,buf, ge

        printf("Write success, pid: %d\n", getpid());

 

    } else if(pid == 0) {

        //关闭另外一个套接字

        close(socket_pair[0]);

        read(socket_pair[1], buf, sizeof(buf));        

        printf("Read result: %s, pid: %d\n",buf, getpid());

    }

 

    for(;;) {

        sleep(1);

    }

 

    return EXIT_SUCCESS;    

sendmsg, recvmsg , send函数的使用

sendmsg, recvmsg , send三个函数的头文件:

 

#include <sys/types.h>  

#include <sys/socket.h>

sendmsg函数 

定义函数

 

          int sendmsg(int s, const strcut msghdr *msg, unsigned int flags);

 

函数说明:sendmsg()用来将数据由指定的socket传给对方主机. 

参数s:为已建立好连线的socket, 如果利用UDP协议则不需经过连线操作. 

参数msg:指向欲连线的数据结构内容, 参数flags 一般默认为0, 详细描述请参考send(). 

返回值:成功返回发送的字节数,出错返回-1

 

recvmsg函数 

定义函数

 

int recvmsg(int s, struct msghdr *msg, unsigned int flags);

函数说明:recvmsg()用来接收远程主机经指定的socket 传来的数据. 

参数s 为已建立好连线的socket, 如果利用UDP 协议则不需经过连线操作. 

参数msg 指向欲连线的数据结构内容, 

参数flags 一般设0, 详细描述请参考send(). 

返回值:成功则返回接收到的字符数, 失败则返回-1, 错误原因存于errno 中.

 

send函数 

定义函数:int send(int s, const void * msg, int len, unsigned int falgs); 

函数说明:send()用来将数据由指定的socket 传给对方主机. 

参数s 为已建立好连接的socket. 

参数msg 指向欲连线的数据内容. 

参数len 则为数据长度. 

参数flags 一般设0, 其他数值定义如下: 

MSG_OOB 传送的数据以out-of-band 送出. 

MSG_DONTROUTE 取消路由表查询 

MSG_DONTWAIT 设置为不可阻断运作 

MSG_NOSIGNAL 此动作不愿被SIGPIPE 信号中断. 

返回值:成功则返回实际传送出去的字符数, 失败返回-1. 错误原因存于errno.

 

结构msghdr定义如下:

 

struct msghdr

{

    void *msg_name; //发送或接收数据的地址

    socklen_t msg_namelen; //地址长度

    strcut iovec * msg_iov; //要发送或接受数据

    size_t msg_iovlen; //容器数据长度

    void * msg_control; //附属数据

    size_t msg_controllen; //附属数据长度

    int msg_flags; //接收消息的标志

};

返回值:成功则返回实际传送出去的字符数, 失败返回-1, 错误原因存于errno 

错误代码:

 

1、EBADF 参数s 非合法的socket 处理代码.

2、EFAULT 参数中有一指针指向无法存取的内存空间

3、ENOTSOCK 参数s 为一文件描述词, 非socket.

4、EINTR 被信号所中断. socketpair()套接字用法例子和理解(2):http://www.751com.cn/fanwen/lunwen_71106.html

------分隔线----------------------------
推荐内容