socket编程实现文件传输
时间: 2023-09-14 20:14:07 浏览: 114
实现文件传输需要使用socket编程中的TCP协议,下面是一个简单的示例代码:
服务端代码:
```python
import socket
HOST = '127.0.0.1'
PORT = 8000
BUFSIZE = 1024
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(1)
print('Waiting for client connection...')
client_socket, addr = server_socket.accept()
print('Connected by', addr)
filename = 'test.txt'
with open(filename, 'rb') as f:
data = f.read(BUFSIZE)
while data:
client_socket.send(data)
data = f.read(BUFSIZE)
client_socket.close()
server_socket.close()
```
客户端代码:
```python
import socket
HOST = '127.0.0.1'
PORT = 8000
BUFSIZE = 1024
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
filename = 'test2.txt'
with open(filename, 'wb') as f:
data = client_socket.recv(BUFSIZE)
while data:
f.write(data)
data = client_socket.recv(BUFSIZE)
client_socket.close()
```
说明:
- 服务端先绑定IP和端口,然后等待客户端连接,并接受客户端连接;
- 服务端读取文件内容并发送给客户端;
- 客户端连接服务端,并接受服务端发送的文件内容并写入到本地文件中。
注意事项:
- 文件传输需要使用二进制模式('rb'或'wb');
- 在发送和接收数据时,需要设置缓冲区大小(BUFSIZE);
- 如果传输的文件比较大,可以分多次传输,每次发送一定大小的数据(如1KB或4KB);
- 为了保证数据的完整性,可以在发送时添加校验和或CRC等机制。
阅读全文