import socket import numpy as np import cv2 server_ip = '10.132.11.225' server_port = 8000 buffer_size = 65536 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((server_ip, server_port)) server_socket.listen(5) print('Server is listening...') num_photos = 0 # 记录接收到的照片数量 max_photos = 3 # 最大保存的照片数量 while num_photos < max_photos: client_socket, client_address = server_socket.accept() print('Connected by', client_address) data = b'' while True: packet = client_socket.recv(buffer_size) if not packet: break data += packet img_bytes = np.frombuffer(data, dtype=np.uint8) img = cv2.imdecode(img_bytes, cv2.IMREAD_COLOR) cv2.imwrite(f'photo_{num_photos}.jpg', img) # 保存照片 num_photos += 1 # 接收到的照片数量加1 server_socket.close()
时间: 2024-03-25 10:36:36 浏览: 30
这是一个使用 Python 编写的简单的图片接收服务器,它可以接收客户端发送的图片并保存到本地。以下是代码的详细解释:
1. 导入必要的库:
```python
import socket
import numpy as np
import cv2
```
2. 设置服务器的 IP 地址、端口号和缓冲区大小:
```python
server_ip = '10.132.11.225'
server_port = 8000
buffer_size = 65536
```
3. 创建服务器套接字并绑定 IP 地址和端口号,并开始监听来自客户端的连接请求:
```python
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((server_ip, server_port))
server_socket.listen(5)
print('Server is listening...')
```
4. 初始化接收到的照片数量和最大保存的照片数量:
```python
num_photos = 0
max_photos = 3
```
5. 在一个 while 循环中接收客户端发送的图片,并保存到本地:
```python
while num_photos < max_photos:
# 等待客户端连接并返回客户端套接字和地址信息
client_socket, client_address = server_socket.accept()
print('Connected by', client_address)
# 接收客户端发送的数据
data = b''
while True:
packet = client_socket.recv(buffer_size)
if not packet:
break
data += packet
# 将接收到的数据转换为图片格式
img_bytes = np.frombuffer(data, dtype=np.uint8)
img = cv2.imdecode(img_bytes, cv2.IMREAD_COLOR)
# 保存图片到本地
cv2.imwrite(f'photo_{num_photos}.jpg', img)
# 更新接收到的照片数量
num_photos += 1
# 关闭服务器套接字
server_socket.close()
```
总的来说,这段代码实现了一个简单的图片接收服务器,可以用于接收客户端发送的图片并保存到本地。