利用socket进行局域网收发文件

首先在刷好linux的随身wifi准备创建接受端

注意发送接受双方编码一致

1
<strong>file_name = conn.recv(1024).decode('utf-8')</strong>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import socket
 
# 定义要绑定的IP地址和端口号
HOST = ''
PORT = 8888
 
# 创建socket对象并绑定到指定IP地址和端口号
s = socket.socket()
s.bind((HOST, PORT))
 
# 监听端口
s.listen(1)
 
# 等待连接
conn, addr = s.accept()
print('Connected by', addr)
 
# 接收文件名
file_name = conn.recv(1024).decode()  
# 接收文件数据
with open(file_name, 'wb') as f:
    while True:
        data = conn.recv(1024)
        if not data:
            break
        f.write(data)
 
# 关闭连接
conn.close()


  


name=file_name[:file_name.find(".")]
if not os.path.exists(name):
open(name+".py", 'a').close()


with open(name+".py", 'wb') as f:
while True:
data = conn.recv(1024)
if not data:
break
f.write(data)

 执行就会阻塞等待,这时候服务器就会监听8888端口,并接收通过该端口发送来的文件,可以看到8888端口已经处于监听状态

 

客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import socket
 
def transfer_file(file_path, host, port):
    # 创建socket对象并连接到指定主机和端口
    s = socket.socket()
    s.connect((host, port))
 
    # 发送文件名
    file_name = file_path.split("/")[-1].encode('utf-8')
    s.send(file_name)
 
    # 发送文件数据
    with open(file_path, "rb") as f:
        while True:
            data = f.read(1024)
            if not data:
                break
            s.send(data)
 
    # 关闭socket连接
    s.close()
 
if __name__ == "__main__":
    # 定义目标主机和端口号
    target_host = "192.168.0.118"
    target_port = 8888
 
    # 定义要传输的文件路径
    file_path = "../serv.py"
 
    # 发送文件
    transfer_file(file_path, target_host, target_port)

  

 可以看到已经成功接收到文件

 

 

 

 

 

 

 

 

 

 

 

posted @   张喆坤  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示