• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linuxlinux进程间通信unix socket(域套接字)

武飞扬头像
smartvxworks
帮助5

目录

1.unix socket(域套接字)

2.unix socket特点

3.unix socket常用接口

3.1 socket

3.2 setsockopt

3.3 bind

3.4 listen

3.5 select

4.unix socket实例

4.1 client 和 server建立连接与通讯过程

4.2 server端代码实例

4.3 client端代码实例

4.4 执行结果


1.unix socket(域套接字)

        使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信,即域套接字,将通信域指定为PF_UNIX,域套接字又称为unix socket。

2.unix socket特点

(1) 只能用于同一设备上不同进程之间的通信;

(2) 效率高于网络套接字。域套接字仅仅是复制数据,并不走协议栈;

(3) 可靠,全双工;

3.unix socket常用接口

3.1 socket

        使用socket函数创建域套接字句柄。

函数原型:

int socket(int domain, int type, int protocol);

参数说明:

domain:用于指定通信的区域

  • PF_UNIX、AF_UNIX时,表示创建UNIX域的套接字,可实现同一机器上的不同进程间的通信;
  • PF_INET和AF_INET表示网络套接字;
  • PF_PACKET用来与驱动层面收发数据报的,接收和发送报文包含链路层信息。

type :SOCK_DGRAM或者SOCK_STREAM。

  •  SOCK_STREAM:表示面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢;
  • SOCK_DGRAM:表示无连接的数据传输方式。计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传,因为 SOCK_DGRAM 所做的校验工作少,所以效率比 SOCK_STREAM 高。

protocol 表示传输协议,常用的有 IPPROTO_TCP 和 IPPTOTO_UDP,分别表示 TCP 传输协议和 UDP 传输协议。

AF和PF的区别

  • AF 表示ADDRESS FAMILY 地址族 
  • PF 表示PROTOCL FAMILY 协议族

在windows中AF_INET与PF_INET完全一样。而在Unix/Linux系统中,在不同的版本中这两者有微小差别,对于BSD是AF,对于POSIX是PF,基本可以混用。

3.2 setsockopt

设置socket属性。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfgggee
系列文章
更多 icon
同类精品
更多 icon
继续加载