python socket 通信图片客户端和服务端
时间: 2023-08-07 10:01:48 浏览: 72
下面是一个使用Python socket进行图片传输的简单示例,包括客户端和服务端的代码:
服务端代码(server.py):
```python
import socket
import cv2
import numpy as np
# 创建一个TCP/IP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(1)
print("等待客户端连接...")
client_socket, client_address = server_socket.accept()
print("客户端已连接:", client_address)
# 接收图片数据
data = b""
while True:
packet = client_socket.recv(4096)
if not packet:
break
data += packet
# 将接收到的数据转换为图像
image_array = np.frombuffer(data, dtype=np.uint8)
image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)
# 显示图像
cv2.imshow("Received Image", image)
cv2.waitKey(0)
# 关闭套接字和窗口
client_socket.close()
server_socket.close()
cv2.destroyAllWindows()
```
客户端代码(client.py):
```python
import socket
import cv2
# 连接服务端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8888))
# 读取图像文件
image = cv2.imread('image.jpg')
# 将图像数据转换为字符串
_, image_data = cv2.imencode('.jpg', image)
image_data = image_data.tobytes()
# 发送图像数据
client_socket.sendall(image_data)
# 关闭套接字
client_socket.close()
```
在这个示例中,服务端监听本地8888端口,客户端连接到服务端并发送图片数据。服务端接收数据并将其转换为图像,然后显示出来。请注意,客户端需要将要发送的图片命名为"image.jpg"并与客户端代码处于同一目录下。
希望这个示例对您有所帮助!