本地套接字

本文介绍了本地套接字的基本原理,通过创建、绑定、监听、接受等函数实现进程间的通信。利用socket对象和socket文件,进行数据流或报文的传输,类似于网络通信但更专注于本地系统的进程间交互。编程模型包括进程A创建socket、监听连接,而进程B则连接并进行读写操作。
摘要由CSDN通过智能技术生成

本地套接字

1、基本原理

​ 把网络服务抽象成文件(套接字文件),按照网络通信的格式,进行进程间通信。

2、常用函数
int socket(int domain, int type, int protocol);
  • 功能:创建socket对象

    • domain:通信方式

    ​ AF_UNIX 本地套按字

    ​ AF_INET 网络通信

    • type:数据的发送方式

    ​ SOCK_STREAM 数据流

    ​ SOCK_DGRAM 报文

    • protocol:特殊协议,写0即可

    • 返回值:

    ​ 成功返回socket对象描述符

    ​ 失败返回-1

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
  • 功能:把socket对象与socket文件绑定

    • sockfd:socket对象描述符

    • addr:socket文件的地址

    • addrlen:addr 实际类型的字节数

struct sockaddr_un
{
	sa_family_t sun_family; // 与socket函数的domain参数相同即可
	char sun_path[108];   	// socket文件的路径
};
int listen(int sockfd, int backlog);
  • 功能:开户监听,并设置最大排队数量
    • sockfd:socket对象描述符
    • backlog:最大排队数量
    • 返回值:成功则返回0, 失败返回-1

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  • 功能:等待对方连接

    • sockfd:socket对象描述符

    • addr:用于存储对方的通信地址

    • addrlen:既是输入又是输出,注意。

    • 返回值:连接成功的socket描述符,可以用它进行读写数据。

​ read/write/close函数还可以继续使用。

```c
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
```
  • 功能:连接到socket对象

    • addr:对方和地址

    • addr:实际类型的字节数

编程模型:

​ 进程A 进程B

​ 1、创建socket对象 1、创建socket对象

​ 2、准备地址(文件的路径) 2、准备地址(文件的路径)

​ 3、绑定socket对象和socket文件 …

​ 4、开启监听 …

​ 5、等待连接 3、连接

​ 6、读/写数据 4、写读数据

​ 7、关闭socket对象 5、关闭socket对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@小倔牛@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值