python学习笔记--本地套接字

本地套接字:
意义: 在linux/unix操作系统下,提供本地进程间通信的一种方式
发送端和接收端通过同一个socket通信,发送端发送消息给该文件,接收端从该文件进行接收即可
 

接收端:
本地套接字创建流程
1, 创建套接字
    sockfd = socket(AF_UNIX, SOCK_STREAM)
2, 绑定套接字
    server_address = '/tmp/msg.sock'
    sockfd.bind(server_address)
3,监听
4, 接收
5, 消息首发


发送端:
1,创建
2,connect()
3, send()/recv()
4, close()


接收端代码:

from socket import *
from time import ctime
import os


ADDR = '/tmp/msg.sock'

#做个判断,如果文件存在则删除
if os.path.exists(ADDR):
    os.remove(ADDR)



#create
socketfd = socket(AF_UNIX,SOCK_STREAM)

#bind
socketfd.bind(ADDR)

socketfd.listen(5)

connfd,addr = socketfd.accept()
while True:
    data = connfd.recv(1024)
    if not data:
        break
    print(data.decode())
    connfd.send('copy! {}'.format(ctime()).encode())

connfd.close()
socketfd.close()

发送端代码

from socket import *

#address为发送端创建的同一个文件
ADDR = '/tmp/msg.sock'

clientfd = socket(AF_UNIX, SOCK_STREAM)

#连接到该套接字
clientfd.connect(ADDR)

while True:
    msg = input('>>>')
    if not msg:
        break
    clientfd.send(msg.encode())

    data = clientfd.recv(1024)
    print(data.decode())

clientfd.close()

运行效果:

#发送端
[root@MiniPython wang]# python msg_sent.py
>>>hi
copy! Wed Jul 10 18:39:04 2019
>>>this is tony
copy! Wed Jul 10 18:39:06 2019
>>>how are you!
copy! Wed Jul 10 18:39:12 2019
>>>China, great great great!!
copy! Wed Jul 10 18:39:25 2019
>>>
----------------------------------------------
#接收端
[root@MiniPython wang]# python unix_sock.py
hi
this is tony
how are you!
China, great great great!!

 

你可能感兴趣的:(Python)