在Python中实现通信工具,通常有以下几种方式:
TCP/IP通信
使用`socket`模块可以实现TCP/IP通信。以下是创建一个简单TCP服务器和客户端的示例代码:
服务器端代码:
```python
import socket
def start_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(5)
print('TCP服务器已启动,等待客户端连接。')
while True:
client_socket, client_address = server_socket.accept()
print('客户端已连接:', client_address)
while True:
data = client_socket.recv(1024)
if data:
print('收到客户端的消息:', data.decode('utf-8'))
client_socket.send('ACK!'.encode())
else:
break
client_socket.close()
客户端代码:
```python
import socket
def start_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
while True:
message = input('请输入消息:')
client_socket.send(message.encode('utf-8'))
response = client_socket.recv(1024)
print('服务器回应:', response.decode('utf-8'))
进程间通信(IPC)
使用`multiprocessing`模块可以实现进程间通信。以下是使用`Queue`进行进程间通信的示例代码:
```python
from multiprocessing import Process, Queue
def worker(queue):
queue.put('Hello from worker!')
if __name__ == '__main__':
queue = Queue()
p = Process(target=worker, args=(queue,))
p.start()
print(queue.get())
串口通信
使用`pyserial`模块可以实现串口通信。以下是使用`pyserial`进行串口通信的示例代码:
```python
import serial
ser = serial.Serial('COM1', 9600)
ser.write(b'Hello, Serial!')
print(ser.read(10))
使用`Pipe`进行线程间通信
`Pipe`可以在两个进程间进行通信,并且性能通常高于`Queue`。
```python
from multiprocessing import Process, Pipe
def child_process(conn):
data = conn.recv()
print('子进程收到数据:', data)
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=child_process, args=(child_conn,))
p.start()
parent_conn.send('Hello from parent process')
p.join()
以上示例展示了如何使用Python实现不同类型的通信工具。您可以根据具体需求选择合适的方法进行通信