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&