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
    
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值