• UDP协议编程


    一、UDP适用于对效率要求相对较高而对准确性要求相对较低的场合,例如视频在线点播、语音通话等。

    二、socket模块中经常用于UDP编程的方法主要有:

    a、socket([family[,type[,proto]]]):创建一个socket对象,其中family为socket_AF_INET表示IPV4,socket.AF_INET6表示IPV6;type为SOCK_STREAM表示TCP协议,SOCK_DGRAM表示UDP协议。

    b、sento(string,address):把string指定在字节串内容发送给address指定的地址,address是一个元组,格式为(IP地址,端口号)

    c、recvfrom(bufsize[,flags]):接受数据

    三例题

    题目:编写UDP通信程序,发送端发送一个字符串“Hello world!”。接收端在计算机的5000端口进行接收,并显示接收内容,如果收到字符串bye(忽略大小写)则结束监听。

    接收端代码

     1 import socket 
     2 # 使用IPV4协议,使用UDP协议传输数据
     3 s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
     4 # 绑定端口和端口号,空字符串表示本机任何可用IP地址 
     5 s.bind(('', 5000))
     6 while True:     
     7     data, addr = s.recvfrom(1024) # 显示接收到的内容     
     8     data = data.decode()     
     9     print('received message:{0} from PORT {1[1]} on {1[0]}'.format(data,addr))     
    10     if data.lower() == 'bye':     
    11         break 
    12 s.close( )

    发送端代码

    1 import socket 
    2 import sys 
    3 s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    4 # 假设192.168.0.103是接收端机器的IP地址 
    5 s.sendto(sys.argv[1].encode() , ("192.168.0.4" ,5000)) 
    6 s.close( ) 

    首先

    a、启动一个命令提示符环境并运行接收端程序,这时接收端程序处于阻塞状态

    b、接下来再启动一个新的命令提示符环境并运行发送端程序,此时会看到接收端程序继续运行并显示接收到的内容以及发送端程序所在计算机IP地址和占用的端口号。

    c、当发送端发送字符串bye后,接收端程序结束,此后再次运行发送端程序时接收端没有任何反应,但发送端程序也并不报错

    结果如下:

  • 相关阅读:
    普通平衡树(treap与splay模板)
    NOIP2009T4 靶形数独
    单调队列模板
    NOIP2010引水入城
    数差
    NOIP2016DAY2T1 组合数问题
    NOIP2016 D2T3 愤怒的小鸟
    NOIP双栈排序
    膜拜
    斐波那契数列
  • 原文地址:https://www.cnblogs.com/qinlai/p/12865070.html
Copyright © 2020-2023  润新知