python用TCP协议传文件
时间: 2024-10-09 18:16:24 浏览: 69
在Python中,可以使用socket模块来创建TCP服务器,并通过发送文件内容的字节流来传输文件。以下是一个简单的步骤概述:
1. **建立服务器**:
首先,你需要创建一个TCP服务器,监听客户端连接。可以使用`socket.socket()`创建一个新的套接字,然后绑定到特定的端口(如8000),并开启监听。
```python
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 8000))
server.listen(1)
```
2. **接收连接**:
当有客户端连接时,接受连接,创建一个新的套接字用于通信。
```python
client_socket, addr = server.accept()
```
3. **读取文件**:
然后你可以打开本地的文件,逐块读取数据,并将其转换成字节流发送给客户端。
```python
with open('file_to_send.txt', 'rb') as file:
data = file.read(CHUNK_SIZE) # 分块读取文件,CHUNK_SIZE是你想要的块大小
while data:
client_socket.sendall(data)
data = file.read(CHUNK_SIZE)
```
4. **关闭连接**:
完成文件传输后,记得关闭套接字连接。
```python
client_socket.close()
```
5. **客户端接收**:
客户端需要监听来自服务器的数据,并保存下来。一旦收到全部文件数据,就可以将字节流写入本地文件。
```python
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 8000))
data = client.recv(BUFFER_SIZE) # 设置合适的缓冲区大小
while data:
with open('received_file.txt', 'ab') as received_file:
received_file.write(data)
data = client.recv(BUFFER_SIZE)
client.close()
```
阅读全文