栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Unix Socket(Linux)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unix Socket(Linux)

一、介绍

Unix Socket是进程通信之一,Unix Socket类似与TCP/IP通信。该通信不依赖与IP,而实依赖与一个文件。在许多应用中都用到了该通信,如MySQL,在MySQL的配置文件中就有一项是本地Unix Socket通信的路径配置。

二、服务器与客户端

Server

socket
bind
accept
    send
    recv

Client

socket
connect
    send
    recv

二、函数介绍

1、创建Socket
int socket(int domain, int type, int protocol);
返回值:
	成功:创建SocketID
	失败:-1
参数:
	domain:AF_UNIX
	type:
		SOCK_STREAM:面向连接
		SOCK_DGRAM:非连接
	protocol:0

2、绑定,绑定之后会创建通信文件
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
返回值:
	成功:0
	失败:-1
参数:
	sockfd:SocketID
	addr:
		struct sockaddr_un ser;
    		bzero(&ser, sizeof(struct sockaddr_un));
    		ser.sun_family = AF_UNIX;
    		memcpy(ser.sun_path, "ListenPath", strlen("ListenPath"));	//ser.sun_path :Unix Socket通信会绑定本地文件作为通信介质
    	addrlen:sizeof(ser)

3、取消绑定,关闭Socket不会删除通信文件,需要unlink才可以删除文件
unlink("ListenPath")

4、连接
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
返回值:
	成功:0
	失败:-1
参数:
	sockfd:SocketID
	addr:
		sockaddr_un addr;
    		bzero(&addr, sizeof(addr));
    		addr.sun_family = AF_UNIX;
    		memcpy(addr.sun_path, "ListenPath", strlen("ListenPath");
    	addrlen:sizeof(addr)
    
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
返回值:
    成功:接受长度
    失败:
        -1:接受失败
        0:Socket断开
参数:
    sockfd:socket id
    buf:接受内容
    len:接受长度
    flags:默认为0

ssize_t send(int sockfd, const void *buf, size_t len, int flags);
返回值:
    成功:发送长度
    失败:
        -1:发送失败
        0:Socket断开
参数:
    sockfd:socket id
    buf:发送内容
    len:发送长度
    flags:默认为0
    
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845269.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号