牛骨文教育服务平台(让学习变的简单)
博文笔记

[代码笔记] python 之网络编程: 使用udp 发送音频文件

创建时间:2016-12-22 投稿人: 浏览次数:1398

使用udp发送一个可执行的jar文件

服务端:

#!python
#文件名: demo_server.py
"""
    规定:
    服务器接受客户端请求,得知要发送文件了(实际就得知该发送哪个)
    向其发送文件,然后不停的发送(大文件分段发送),此处我还要接受客户端的接受成功消息
"""


import socket

BUF_SIZE = 1024
server_addr = ("127.0.0.1",8888)

#socket的类型是socket.SOCK_DGRAM(udp使用的)
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#服务端照例绑定地址
server.bind(server_addr)

#循环接受客户端发送数据,并将数据发回

count=0
flag=1
f=open("tank.jar","rb")
while True:
    if count==0:
        print ("Are You Ready?")
        data,client_addr = server.recvfrom(BUF_SIZE)
        print ("来自",client_addr," 的数据是: ",data.decode("utf-8"))

    data=f.read(BUF_SIZE)
    if str(data)!="b""":
        server.sendto(data,client_addr)
        print(data)#此处打印注意被刷屏,仅测试用
    else:
        server.sendto("end".encode("utf-8"),client_addr)#此处为文件结束,发送结束通知给客户端
        break

    data,client_addr = server.recvfrom(BUF_SIZE)
    print ("接受自 ",client_addr," 收到数据为 : ",data.decode("utf-8"))
    count+=1
print("循环了"+str(count))
server.close()

客户端:

#!python
#文件名: demo_client.py

"""
     规定:
     客户端向服务端请求文件(音频或者视屏等完整性要求不高的)
     先打个招呼,要文件了(实际可以为要哪个文件)
     然后开始接受文件,不停的接受即可(这里我每接受一次就回复一句ok))
"""

import socket
import struct

BUF_SIZE = 1024
server_addr = ("127.0.0.1",8888)
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

count=0;
#不停的发送数据 ,没发一次尝试接受一次数据并打印
f=open("tmp/file_copy.jar","wb")
while True:
     if count==0:
          data="Yes,I"m Ready"
          client.sendto(data.encode("utf-8"),server_addr)
     data,addr = client.recvfrom(BUF_SIZE)
     if str(data)!="b"end"":
          f.write(data)
          print(data)#此处打印注意被刷屏,仅测试用
     else:
          break;#接受到结束通知,结束循环,打印循环次数,然后去指定路径查找file_copy.jar尝试运行
     client.sendto("ok".encode("utf-8"),addr)#向服务端发送成功通知
     count+=1;

print("循环了"+str(count))
f.close()
client.close()
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。