python TCP文件传输
时间: 2023-10-14 08:30:53 浏览: 119
下面是一个简单的 Python TCP 文件传输的示例代码:
服务端代码:
```python
import socket
def recv_file(conn):
# 接收文件名和文件大小
filename = conn.recv(1024).decode()
filesize = int(conn.recv(1024).decode())
# 创建文件并接收数据
with open(filename, 'wb') as f:
while True:
data = conn.recv(1024)
if not data:
break
f.write(data)
print('文件传输完成!')
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
s.bind(('localhost', 8888))
# 监听客户端连接
s.listen(5)
print('等待客户端连接...')
while True:
conn, addr = s.accept()
print(f'已连接:{addr}')
# 接收文件并保存
recv_file(conn)
# 关闭连接
conn.close()
```
客户端代码:
```python
import socket
def send_file(conn, filename):
# 发送文件名和文件大小
filesize = str(os.path.getsize(filename))
conn.send(filename.encode())
conn.send(filesize.encode())
# 发送文件内容
with open(filename, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
conn.send(data)
print('文件传输完成!')
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
s.connect(('localhost', 8888))
# 发送文件
send_file(s, 'test.txt')
# 关闭连接
s.close()
```
这里的服务端和客户端都是使用 TCP 协议建立连接,客户端先发送文件名和文件大小给服务端,服务端接收到后创建文件并接收数据,最后关闭连接;客户端发送文件内容给服务端,传输完成后关闭连接。
阅读全文