linux socketpair 函数

来源:互联网 发布:黑沙捏脸数据导入 编辑:程序博客网 时间:2024/06/06 20:46

#include <sys/socket.h>

int socketpair(int family, int type, int procotol, int sockfd[2] )

         socketpair函数创建两个随后链接起来的套接字,此函数只适用于unix域套接字。

         family参数必须为AF_LOCAL, procotol必须为0, type参数可以是SOCK_STREAM也可以是SOCK_DGRAM,

信创建的两个套接字作为sockfd【0】和sockfd【1】返回。

        这样创建的两个套接字不曾命名,也就是说其中没有涉及隐式的bind调用,指定SOCK_STREAM调用socketpair

得到的结果成为流管道,它与调用pipe创建的普通unix管道类似,区别在于流管道是全双工的。即描述符可读可写。


        unit域协议并不是不是一个实际的协议族,而是在同一个主机上执行客户服务器通信的一种方式,Unit域协议可视

为一种IPC机制。Unix域协议有以下好处:

        1. Unix域套接字效率往往比通信两端位于同一主机的TCP套接字快出一倍

        2. Unix域套接字可以在同一主机的不同进程间传递描述符

        3. Unix域套接字较新的实现把客户凭证(用户ID和组ID)提供给服务器,可以提供额外的安全检查措施。

        Unix域套接字地址结构如下:

struct sockaddr_un {

         sa_family_t   sun_family     AF_LOCAL

         char sun_path[104]             以空字符结尾的路径名

};

        


0 0
原创粉丝点击