• python UDP套接字通信


    UDPserver.py

     1 import socket
     2 #导入套接字模块
     3 
     4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
     5 # - socket.AF_INET:IPV4
     6 # - socket.STREAM:TCP
     7 # - socket.DGRAM:UDP
     8 
     9 s.bind(('',25555))
    10 #绑定套接字有效地址和端口
    11 #''空位任何地址 本地的127.0.0.1 和局域网还有自己真实的ip
    12 print('[+] Server Open.....')
    13 
    14 while True:
    15     try:
    16         data,c_addr = s.recvfrom(1024)
    17         #一次性接受1024bytes的数据 ,返回一个元组,其中有数据和地址
    18         #UDP不需要构成连接,直接发送即可
    19         print('from:',c_addr)
    20         #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
    21         print('say:%s'%(data.decode('utf-8')))
    22         msg = data.decode('utf-8')
    23         s.sendto(msg.encode('utf-8'),c_addr)
    24         #发送信息,其中有两个参数,一个是信息,一个是目标地址和端口
    25     except KeyboardInterrupt:
    26         break
    27 
    28 print('[+] Server Close......')
    29 s.close

    UDPclient.py

     1 import socket
     2 #导入套接字模块
     3 
     4 c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
     5 # - socket.AF_INET:IPV4
     6 # - socket.STREAM:TCP
     7 # - socket.DGRAM:UDP
     8 
     9 while True:
    10     try:
    11         msg = input('>>>')
    12         if msg == 0:
    13             #判断输入是否为空 就是直接回车了
    14             continue
    15         #UDP不需要构成连接,直接发送即可
    16         c.sendto(msg.encode('utf-8'),('127.0.0.1',25555))
    17         #发送消息,其中两个参数,第一个是要发送的信息
    18         #第二个是发送的ip地址和端口,是一个元组
    19 
    20         data,s_addr = c.recvfrom(1024)
    21 
    22         #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
    23         print('$: %s'%(data.decode('utf-8')))
    24     except KeyboardInterrupt:
    25         break
    26 
    27 c.close()

    UDP套接字模型

    • UDP不需要构成连接,直接发送即可

    • 服务端模型:

      • s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

      • s.bind(('',25555))

        • data,c_addr = s.recvfrom(1024)

          • 别人发来的消息 就直接发到s服务端套接字了

          • data:发来的数据

          • c_addr:谁发的

        • s.sendto(msg, c_addr)

    • send recv

    • sendto recvfrom

      • 都是阻塞的

       生命不息
       希望不止
       将来的你
       一定会感谢现在拼命的自己
       fighting!!!
  • 相关阅读:
    vmware导出为ovf
    华三接入交换机推荐
    mysql root情况
    ospf精确宣告地址
    kubernetes k8s yum localinstall
    js判断邮箱、用户名、手机号码和电话号码是否输入正确?
    如何修改Oracle中表的字段长度?
    mybatis与hibernate区别
    SSM框架的优势?
    SSH框架的优势?
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/9764011.html
Copyright © 2020-2023  润新知