zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    Jenkins构建常见问题
    Jenkins搭建.NET自动编译发布远程环境
    Jenkins搭建.NET自动编译发布本地环境
    Web API系列(四) 使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录
    C# 异步编程(async&await)
    [root@localhost ~]# /etc/httpd/conf/httpd.conf bash: /etc/httpd/conf/httpd.conf: 权限不够
    解决apache启动失败:Job for httpd.service failed.
    Windows环境下PHP配置详解
    如何以管理员身份运行cmd
    win8如何设置以管理员身份运行
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/9764011.html
Copyright © 2011-2022 走看看