pythonsocket文件传输
时间: 2023-10-07 18:14:07 浏览: 101
树莓派采用socket方式文件传输(python).pdf
要使用Python的socket库进行文件传输,可以使用以下步骤:
1. 在发送端,打开要传输的文件,并将其读取为二进制数据。
2. 创建一个socket对象并连接到接收端的IP地址和端口号。
3. 在发送端,使用socket对象的sendall()方法将文件数据发送给接收端。
4. 在接收端,创建一个新文件,并在循环中使用socket对象的recv()方法接收发送端发送的数据,并将其写入文件中。
5. 在发送完所有数据后,关闭文件和socket连接。
下面是一个简单的示例代码,用于实现文件从发送端传输到接收端:
发送端代码:
```python
import socket
def send_file(filename, ip, port):
# 打开要传输的文件并读取二进制数据
with open(filename, 'rb') as file:
file_data = file.read()
# 创建socket对象并连接到接收端的IP地址和端口号
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
# 发送文件数据给接收端
sock.sendall(file_data)
# 关闭socket连接
sock.close()
# 使用示例
filename = 'example.txt'
ip = '127.0.0.1'
port = 12345
send_file(filename, ip, port)
```
接收端代码:
```python
import socket
def receive_file(save_as_filename, ip, port):
# 创建socket对象并绑定到指定的IP地址和端口号
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((ip, port))
# 监听连接并等待发送端连接
sock.listen(1)
print('等待发送端连接...')
# 接受发送端连接
conn, addr = sock.accept()
print('发送端已连接:', addr)
# 创建新文件并接收数据
with open(save_as_filename, 'wb') as file:
while True:
# 从发送端接收数据
data = conn.recv(1024)
if not data:
break
# 写入文件
file.write(data)
# 关闭连接和socket
file.close()
conn.close()
sock.close()
# 使用示例
save_as_filename = 'received_file.txt'
ip = '127.0.0.1'
port = 12345
receive_file(save_as_filename, ip, port)
```
阅读全文