socket 通信python实现服务机端的图片服务器的聊天表情的动态图 函数
时间: 2023-11-28 19:04:24 浏览: 79
以下是一个简单的示例代码,实现了在 Python 中使用 socket 通信的服务端,可以接收客户端发送的图片和表情动态图,并将其保存到本地。
```python
import socket
import os
# 创建一个 TCP/IP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 IP 和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 监听来自客户端的连接
server_socket.listen(1)
while True:
# 等待客户端连接
print('等待客户端连接...')
client_socket, client_address = server_socket.accept()
try:
print('客户端连接来自:', client_address)
# 接收客户端发送的消息
message = client_socket.recv(1024).decode('utf-8')
# 如果是图片或者表情动态图,则接收并保存到本地
if message == 'image' or message == 'gif':
# 接收文件名
file_name = client_socket.recv(1024).decode('utf-8')
# 接收文件内容
file_content = b''
while True:
data = client_socket.recv(1024)
if not data:
break
file_content += data
# 保存文件到本地
if message == 'image':
with open(file_name, 'wb') as f:
f.write(file_content)
print('已保存图片:', file_name)
elif message == 'gif':
with open(file_name, 'wb') as f:
f.write(file_content)
print('已保存表情动态图:', file_name)
finally:
# 关闭客户端 socket 连接
client_socket.close()
```
在客户端发送图片或者表情动态图时,需要先发送一个消息类型标识符(例如,'image' 表示图片,'gif' 表示表情动态图),然后再发送文件名和文件内容。可以使用以下代码实现:
```python
import socket
import os
# 创建一个 TCP/IP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
server_address = ('localhost', 8888)
client_socket.connect(server_address)
try:
# 发送消息类型标识符
message_type = 'image' # 或者 'gif'
client_socket.sendall(message_type.encode('utf-8'))
# 发送文件名
file_name = 'test.jpg' # 或者 'test.gif'
client_socket.sendall(file_name.encode('utf-8'))
# 发送文件内容
with open(file_name, 'rb') as f:
file_content = f.read()
client_socket.sendall(file_content)
finally:
# 关闭客户端 socket 连接
client_socket.close()
```
注意,在实际使用中,需要对接收到的文件进行校验和处理,以确保数据完整性和安全性。
阅读全文