import socket server_ip = '10.132.11.225' server_port = 8000 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((server_ip, server_port)) server_socket.listen(1) print('等待客户端连接...') client_socket, client_address = server_socket.accept() print('客户端已连接:', client_address) with open('image.jpg', 'wb') as f: while True: data = client_socket.recv(1024) if not data: break f.write(data) print('图片已保存为image.jpg') client_socket.close() server_socket.close()优化一下可以保存多张照片
时间: 2024-03-24 09:39:54 浏览: 73
好的,对于这个代码,我们可以将其封装成一个函数,实现保存多张照片的功能。具体来说,可以使用一个循环,在每次接收到客户端发送的图片数据时,将其保存为一个新的文件。下面是一个可能的实现:
```python
import socket
def receive_images(server_ip, server_port, save_dir='images'):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((server_ip, server_port))
server_socket.listen(1)
print('等待客户端连接...')
client_socket, client_address = server_socket.accept()
print('客户端已连接:', client_address)
i = 0
while True:
filename = f'{save_dir}/image_{i}.jpg'
with open(filename, 'wb') as f:
while True:
data = client_socket.recv(1024)
if not data:
break
f.write(data)
print(f'图片已保存为{filename}')
i += 1
client_socket.close()
server_socket.close()
```
在这个函数中,我们新增了一个 `save_dir` 参数,用于指定保存图片的目录。然后在循环中,使用一个计数器 `i` 来表示文件名中的序号,以便保存多张照片。具体来说,每次循环时,都将文件名设置为 `images/image_i.jpg`,并将图片数据写入到这个文件中。最后,每次循环结束后,计数器 `i` 增加 1,以便保存下一张照片。
需要注意的是,由于这个函数是一个死循环,需要手动终止,因此可能需要在循环中加入一些条件判断,以便在满足某些条件时可以退出循环。另外,如果有多个客户端同时连接,可能需要对函数进行一些修改,以便同时处理多个客户端发送的数据。
阅读全文