python socket 文件上传
时间: 2023-07-25 20:25:28 浏览: 54
在 Python 中,可以使用 socket 模块实现文件上传。以下是一个简单的示例代码,可以将本地文件上传至服务器:
服务器端:
```python
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8000))
server_socket.listen(1)
while True:
client_socket, address = server_socket.accept()
print('Connected by', address)
filename = client_socket.recv(1024).decode()
with open(filename, 'wb') as f:
while True:
data = client_socket.recv(1024)
if not data:
break
f.write(data)
client_socket.close()
```
客户端:
```python
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8000))
filename = 'test.txt'
client_socket.sendall(filename.encode())
with open(filename, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
client_socket.sendall(data)
client_socket.close()
```
在服务器端,我们首先创建一个 socket 并监听客户端请求。每当有新的客户端连接时,我们首先接收客户端发送的文件名,然后创建一个同名的文件,并将客户端发送过来的数据写入文件中。
在客户端,我们首先创建一个 socket 并连接服务器。然后,我们将要上传的文件名发送给服务器,接着读取文件数据,并将其发送给服务器。
需要注意的是,上述代码中还有一些需要处理的异常情况,例如文件不存在、文件操作失败等等,需要在实际使用中进行处理。