Unix域socket(总结)

Unix域socket是本地进程间通信的有效方式,无需IP和端口,而是通过路径名标识。它支持流式和报式套接字,直接在进程间拷贝数据,高效可靠。bind()创建文件型套接字,connect()在监听队列满时会返回ECONNREFUSED。命名管道和套接字可用于多进程通信,服务器通过accept创建新的套接字处理连接,客户端通过connect建立连接。
摘要由CSDN通过智能技术生成


Unix域协议是在单个主机上执行客户/服务器通信的一种方法,用在本地进程间的通信,在不同进程之间传递套接字。

1)Unix域套接字不需要打包/拆包,计算校验和维护序号与应答,只是将应用层数据从一个进程拷贝到另一个进程,而且Unix域协议机制本质上就是可靠的通讯。

2)Unix套接字可以在同一台主机上各进程之间传递文件描述符。

3)Unix域协议表示协议地址的是路径名,而不是Internet域的IP地址和端口号

 

需注意:

1. bind()成功将会创建一个文件,是一个套接字类型

2. sun_path 最好用一个/tmp目录下的文件的绝对路径,再次启动时最好使用unlink删除这个文件,否则会提示地址正在使用。

3. Unix域协议支持流式套接口与报式套接口

4. Unix域流式套接字connect发现监听队列满时,会立刻返回一个ECONNREFUSED

5. 流式套接字需要处理粘包问题。

 

Unix SocketStructure

Sockaddr /sockaddr_in / in_addr / hostent / servent /

客户端通过connect()函数与服务器连接

在一个单处理器计算机上,同一时间只能有一个进程可以运行,其他进程处于等待运行状态。每个进程轮到的运行时间(时间片)相当短暂,给人一种多个程序在同时运行的假象。

 

编写多线程程序时,通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,这个定义必须位于程序中任何#include之前。

Pthread_create创建一个新线程,调用成功时返回0&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值