只能做本地通讯的套接字:AF_UNIX, AF_LOCAL
1. socket
功能:创建套接字; 头文件: #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> 原型: int socket(int domain, int type, int protocol); #include <sys/socket.h> #include <sys/un.h> unix_socket = socket(AF_UNIX, type, 0); 参数: int domain:Linux支持的协议族(地址族) AF_UNIX, AF_LOCAL Local communication unix(7) int type:指定传输层协议; SOCK_STREAM:字节流式套接字,--->TCP SOCK_DGRAM:数据报式套接字----->UDP; SOCK_RAW:原始套接字,需要手动指定传输协议,定义在第三个参数中; int protocol:指定协议;0代表默认协议; 返回值: 成功,返回一个文件描述符(套接字); 失败,返回-1,更新errno; 地址信息结构体: AF_UNIX : man 7 unix struct sockaddr_un { sa_family_t sun_family; /* AF_UNIX */ char sun_path[108]; /* pathname */ 套接字文件的路径 注意:在服务器中,这个套接字文件必须事先不存在,需要由bind函数创建。 所以,在bind函数运行之前,需要判断文件存不存在,如果存在则删除该文件; };
2. access
功能:判断文件是否有某种权限,或者文件是否存在; 头文件: #include <unistd.h> 原型: int access(const char *pathname, int mode); 参数: char *pathname:指定要判断的文件路径及文件名; int mode: R_OK 判断文件是否有可读权限 W_OK 写 X_OK 执行 ---以上三种可以用 | 连接------ F_OK 判断文件是否存在; 返回值: 文件存在,或者有指定权限,返回0; 否则返回-1,更新errno;
3. unlink
功能:删除文件; 头文件: #include <unistd.h> 原型: int unlink(const char *pathname); 参数: char *pathname:指定要删除的文件路径及文件名; 返回值: 成功,返回0; 失败,返回-1,更新errno