使用python完成两台主机间的文件传输
时间: 2023-10-15 12:02:12 浏览: 52
要实现两台主机间的文件传输,可以采用 socket 编程。在这里,我们可以使用二进制文件传输的方式,即将文件读取为二进制数据,通过 socket 发送给另一台主机,然后在另一台主机上将接收到的二进制数据写入文件。
以下是一个简单的实现思路:
1. 在一台主机上编写一个服务端程序,用于接收另一台主机发送的文件。
```python
import socket
# 创建一个 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名和端口号
host = socket.gethostname()
port = 8888
# 绑定主机名和端口号
server_socket.bind((host, port))
# 等待客户端连接
server_socket.listen(5)
# 循环监听客户端连接请求
while True:
# 接受客户端连接
client_socket, addr = server_socket.accept()
# 接收客户端发送的文件数据
file_data = b""
while True:
data = client_socket.recv(1024)
if not data:
break
file_data += data
# 将文件数据写入本地文件
with open("接收到的文件名", "wb") as f:
f.write(file_data)
# 关闭客户端连接
client_socket.close()
```
2. 在另一台主机上编写一个客户端程序,用于向服务端发送文件。
```python
import socket
# 创建一个 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取服务端主机名和端口号
host = "服务端主机名"
port = 8888
# 连接服务端
client_socket.connect((host, port))
# 读取本地文件
with open("要发送的文件名", "rb") as f:
file_data = f.read()
# 发送文件数据
client_socket.sendall(file_data)
# 关闭客户端连接
client_socket.close()
```
上述代码中,服务端程序首先创建一个 socket 对象,绑定主机名和端口号,并开始等待客户端连接。客户端程序创建一个 socket 对象,连接服务端,读取本地文件为二进制数据,通过 socket 发送给服务端。服务端接收到客户端发送的文件数据后,将其写入本地文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)