在Python中,多个脚本之间的通信可以通过多种方式实现,主要包括进程间通信(IPC)和网络通信。以下是使用网络通信(特别是TCP套接字)进行多个Python脚本通信的基本步骤:
服务器端脚本
import socket
import threading
import time
创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定一个地址和端口
s.bind(('127.0.0.1', 9000))
监听的最大数目
s.listen(5)
print('Waiting for connection...')
def tcplink(sock, addr):
print('Accept new connection from %s:%s...' % addr)
while True:
data = sock.recv(1024)
time.sleep(1)
获得服务器返回的数据
if not data or data.decode('utf-8') == 'exit':
break
elif data.decode('utf-8') == 'PlayGame':
sock.send(b'Ready to play!')
while True:
conn, addr = s.accept()
print('Connected by', addr)
client_handler = threading.Thread(target=tcplink, args=(conn, addr))
client_handler.start()
客户端脚本
import socket
创建一个socket对象
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
连接到服务器
c.connect(('127.0.0.1', 9000))
while True:
message = input('Enter message: ')
if message == 'exit':
break
c.send(message.encode('utf-8'))
data = c.recv(1024)
print('Received:', data.decode('utf-8'))
c.close()
解释
服务器端
创建一个TCP套接字并绑定到本地地址和端口。
开始监听连接请求。
当接收到连接请求时,创建一个新的线程来处理客户端连接。
在新线程中,接收客户端发送的数据,并在接收到特定消息(如'PlayGame')时回复响应。
客户端
创建一个TCP套接字并连接到服务器。
循环接收用户输入并发送给服务器。
接收并打印服务器返回的响应。
注意事项
确保服务器和客户端在同一网络环境下。
可以根据需要调整端口号和套接字选项。
对于更复杂的通信模式,可以考虑使用其他网络协议(如UDP)或更高级的IPC机制(如消息队列、共享内存等)。
以上示例展示了如何使用TCP套接字进行基本的客户端-服务器通信。根据具体需求,可以扩展和修改这些代码