python socket 客户端传输文件给服务器,文件比较大 服务器返回消息给客户端
时间: 2023-07-16 18:14:56 浏览: 44
在Python中,可以使用socket套接字模块来实现客户端向服务器传输文件,同时服务器也可以返回消息给客户端。下面是一个简单的例子:
客户端代码:
```python
import socket
HOST = '127.0.0.1' # 服务器IP地址
PORT = 8888 # 服务器端口号
FILE_PATH = 'test.txt' # 要发送的文件路径
# 创建一个TCP/IP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((HOST, PORT))
# 发送文件
with open(FILE_PATH, 'rb') as f:
data = f.read(1024)
while data:
client_socket.send(data)
data = f.read(1024)
# 接收服务器返回的消息
msg = client_socket.recv(1024)
print(msg.decode())
# 关闭客户端套接字
client_socket.close()
```
服务器端代码:
```python
import socket
HOST = '127.0.0.1' # 服务器IP地址
PORT = 8888 # 服务器端口号
# 创建一个TCP/IP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind((HOST, PORT))
# 监听客户端连接
server_socket.listen(1)
while True:
# 等待客户端连接
print('Waiting for connection...')
client_socket, client_address = server_socket.accept()
print('Connected from:', client_address)
# 接收客户端发送的文件
with open('recv.txt', 'wb') as f:
data = client_socket.recv(1024)
while data:
f.write(data)
data = client_socket.recv(1024)
# 发送消息给客户端
msg = 'File received successfully!'
client_socket.send(msg.encode())
# 关闭客户端套接字
client_socket.close()
```
在客户端代码中,我们首先创建一个TCP/IP套接字,然后连接服务器。接着,我们打开要发送的文件,以二进制模式读取文件内容,并将其分块发送给服务器。最后,我们等待服务器返回的消息,然后关闭客户端套接字。
在服务器端代码中,我们首先创建一个TCP/IP套接字,并绑定IP地址和端口号。然后,我们通过调用listen()方法监听客户端连接。当客户端连接成功后,我们接收客户端发送的文件,并将其保存到本地文件中。接着,我们向客户端发送消息,表示文件已经接收成功。最后,我们关闭客户端套接字。
需要注意的是,以上代码只是一个简单的示例,实际应用中还需要考虑异常处理、文件大小限制、文件传输完整性验证等问题。