帮我写一个代码实现局域网传递文件 跑python
时间: 2023-09-15 13:04:49 浏览: 128
### 回答1:
我可以为你写一段Python代码,用于实现局域网文件传输。import socket# 创建socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名
host = socket.gethostname()# 设置端口号
port = 9999# 绑定端口
s.bind((host,port))# 监听连接
s.listen(5)while True:
# 建立客户端连接
c, addr = s.accept()
print('连接地址:', addr) # 接收文件
filecontent = c.recv(1024)
# 保存文件
with open('file_name.txt','wb') as f:
f.write(filecontent)
f.close() print('文件接收成功!')
# 关闭连接
c.close()
### 回答2:
实现局域网传递文件并运行Python代码可以通过以下步骤实现:
1. 首先,你需要确保所有主机都连接在同一个局域网下,并且具有相应的网络权限。
2. 在发送端,编写一个Python程序,使用socket模块建立一个服务器。服务器程序可以监听特定端口,并在有客户端连接时接收文件。
3. 在接收端,编写另一个Python程序,使用socket模块建立一个客户端。客户端程序可以连接到发送端的服务器,并将要传递的文件发送给服务器。
4. 在接收端,可以使用类似于os模块中的文件操作函数,如open、write等,将接收到的文件保存到本地。
以下是一个简单的代码示例,其中假设发送端的IP地址是192.168.0.1,接收端的IP地址是192.168.0.2,传递的文件名为example.txt。
发送端代码:
```python
import socket
HOST = '192.168.0.1'
PORT = 12345
def send_file():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
print('Waiting for connection...')
conn, addr = s.accept()
print('Connected with', addr)
with open('example.txt', 'rb') as f:
data = f.read()
conn.sendall(data)
conn.close()
send_file()
```
接收端代码:
```python
import socket
HOST = '192.168.0.1'
PORT = 12345
def receive_file():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
with open('received_file.txt', 'wb') as f:
while True:
data = s.recv(1024)
if not data:
break
f.write(data)
s.close()
receive_file()
```
以上代码将会在发送端将example.txt文件发送到接收端,并在接收端将其保存为received_file.txt文件。你可以根据实际情况修改以上代码,并在每个主机上运行相应的程序进行局域网文件传递。
### 回答3:
要实现局域网传递文件并在局域网内运行Python代码,可以使用Socket编程来实现。下面是一个简单的示例代码:
发送端代码:
```python
import socket
def send_file(filename, ip, port):
# 创建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# 连接目标IP和端口
sock.connect((ip, port))
# 读取文件内容并发送
with open(filename, 'rb') as file:
data = file.read(1024)
while data:
sock.send(data)
data = file.read(1024)
# 发送文件结束标志
sock.send(b'EOF')
finally:
sock.close()
# 调用发送函数
send_file('example.txt', '目标IP地址', 12345)
```
接收端代码:
```python
import socket
def receive_file(filename, port):
# 创建TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# 绑定IP和端口
sock.bind(('本机IP地址', port))
sock.listen(1)
# 等待接收文件
conn, addr = sock.accept()
with open(filename, 'wb') as file:
data = conn.recv(1024)
while data != b'EOF':
file.write(data)
data = conn.recv(1024)
finally:
sock.close()
# 调用接收函数
receive_file('received_file.txt', 12345)
```
在发送端代码中,`send_file`函数按照指定的IP地址和端口号创建TCP socket,然后读取文件内容并通过socket发送出去,直到文件发送完毕。最后,发送一个文件结束标志。
在接收端代码中,`receive_file`函数先创建一个TCP socket,并绑定到指定的IP地址和端口号。然后使用`sock.accept()`进行等待,直到有发送者连接上来。接收到文件内容后,将其写入文件中,直到接收到文件结束标志。
需要将代码中的IP地址和端口号替换为实际使用的值,发送端指定接收端IP地址,接收端指定本机IP地址。
阅读全文