[代码笔记] python 之网络编程: 使用udp 发送音频文件
使用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()
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: ExtJS之布局篇
- 下一篇: PHP使用3种方法实现数据采集