python代码实现局域网电脑文件传输
时间: 2023-09-12 18:04:54 浏览: 171
### 回答1:
你可以使用 Python 的 `socket` 模块来实现局域网中电脑之间的文件传输。
下面是一个简单的例子,它使用了基于 TCP 协议的 socket,实现了电脑 A 向电脑 B 传输文件的功能。
首先,电脑 B 应该先运行一个服务器端程序,等待电脑 A 的连接。
```python
import socket
# 设置服务器的 IP 地址和端口号
server_ip = '192.168.0.100'
server_port = 8000
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 IP 地址和端口号
server_socket.bind((server_ip, server_port))
# 设置监听数
server_socket.listen(5)
# 等待客户端连接
client_socket, (client_ip, client_port) = server_socket.accept()
print(f'客户端 {client_ip}:{client_port} 已连接')
# 接收文件内容
file_content = b''
while True:
data = client_socket.recv(4096)
if not data:
break
file_content += data
# 保存文件到本地
with open('received_file.txt', 'wb') as f:
f.write(file_content)
# 关闭 socket
client_socket.close()
server_socket.close()
print('文件传输成功')
```
然后,电脑 A 可以运行一个客户端程序,连接到电脑 B 的服务器并传输文件。
```python
import socket
# 设置服务器的 IP 地址和端口号
server_ip = '192.168.0.100'
server_port = 8000
# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM
### 回答2:
要实现局域网电脑文件传输,可以使用Python Socket编程来建立网络连接和文件传输。
首先,需要确保相关的Python Socket库已经安装。可以使用`socket`和`os`库。另外,需要确定发送端和接收端在相同的局域网中。
发送端代码示例:
```python
import os
import socket
# 服务器端IP和端口
SERVER_IP = '接收端IP'
SERVER_PORT = 12345
# 待传输的文件路径
file_path = '待传输文件路径'
# 创建Socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((SERVER_IP, SERVER_PORT))
# 获取文件名和文件大小
file_name = os.path.basename(file_path)
file_size = os.path.getsize(file_path)
# 发送文件名和文件大小
s.sendall(file_name.encode())
s.sendall(str(file_size).encode())
# 逐块发送文件内容
with open(file_path, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
s.sendall(data)
# 关闭Socket连接
s.close()
```
接收端代码示例:
```python
import os
import socket
# 本机IP和端口
SERVER_IP = '本机IP'
SERVER_PORT = 12345
# 创建Socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((SERVER_IP, SERVER_PORT))
s.listen(1)
# 等待连接
print("等待连接...")
conn, addr = s.accept()
print('已连接:', addr)
# 接收文件名和文件大小
file_name = conn.recv(1024).decode()
file_size = int(conn.recv(1024).decode())
# 创建保存文件的路径
save_path = os.path.join(os.getcwd(), file_name)
# 接收文件内容并保存
with open(save_path, 'wb') as f:
while True:
data = conn.recv(1024)
if not data:
break
f.write(data)
# 关闭连接
conn.close()
s.close()
```
这是一个简单的例子,后续可以根据实际需求进行调整和优化。
### 回答3:
局域网电脑文件传输的实现可以使用Python中的socket模块和os模块来完成。以下是一个基本的示例代码:
```python
import socket
import os
def send_file(server_ip, server_port, file_path):
# 创建TCP Socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
s.connect((server_ip, server_port))
# 发送文件名和文件大小
file_name = os.path.basename(file_path)
file_size = os.path.getsize(file_path)
s.sendall(f"{file_name}|{file_size}".encode())
# 发送文件内容
with open(file_path, "rb") as f:
while True:
data = f.read(1024)
if not data:
break
s.sendall(data)
# 关闭连接
s.close()
def receive_file(server_ip, server_port, save_path):
# 创建TCP Socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP和端口
s.bind((server_ip, server_port))
# 监听连接
s.listen(5)
while True:
# 接受连接
conn, addr = s.accept()
print("Connected by", addr)
# 接收文件名和文件大小
file_info = conn.recv(1024).decode()
file_name, file_size = file_info.split("|")
file_size = int(file_size)
# 接收文件内容
with open(os.path.join(save_path, file_name), "wb") as f:
while file_size > 0:
data = conn.recv(1024)
if not data:
break
f.write(data)
file_size -= len(data)
# 关闭连接
conn.close()
print(f"File {file_name} received successfully")
# 用法示例:
# 发送文件
send_file("192.168.1.100", 9999, "/path/to/file.txt")
# 接收文件
receive_file("0.0.0.0", 9999, "/save/path")
```
以上代码中,send_file函数用于将本地文件发送到指定的服务器。在调用时,需要传入服务器的IP地址、端口号和要发送的文件路径。receive_file函数用于在本地监听指定的IP地址和端口号,接收来自其他计算机的文件,并保存到指定的路径下。
该代码使用TCP Socket进行文件传输,先发送文件名和文件大小信息,再发送文件内容。接收方根据接收到的文件信息来创建文件,并根据文件大小逐步接收内容直至文件完整。文件传输完毕后,关闭连接。
阅读全文