zoukankan      html  css  js  c++  java
  • python3实现UDP协议的简单服务器和客户端

    利用python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了。

    UDP:用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。

    客户端

    python3只能收发二进制数据,需要显式转码

    from socket import *
    
    host  = '192.168.48.128' # 这是客户端的电脑的ip
    port = 13141 #接口选择大于10000的,避免冲突
    bufsize = 1024  #定义缓冲大小
    
    addr = (host,port) # 元祖形式
    udpClient = socket(AF_INET,SOCK_DGRAM) #创建客户端
    
    while True:
        data = input('>>> ')
        if not data:
            break
        data = data.encode(encoding="utf-8") 
        udpClient.sendto(data,addr) # 发送数据
        data,addr = udpClient.recvfrom(bufsize) #接收数据和返回地址
        print(data.decode(encoding="utf-8"),'from',addr)
    
    udpClient.close()
    

    服务器

    同样需要显式转码

    from socket import *
    from time import ctime
    
    host = '' #监听所有的ip
    port = 13141 #接口必须一致
    bufsize = 1024
    addr = (host,port) 
    
    udpServer = socket(AF_INET,SOCK_DGRAM)
    udpServer.bind(addr) #开始监听
    
    while True:
        print('Waiting for connection...')
        data,addr = udpServer.recvfrom(bufsize)  #接收数据和返回地址
        #处理数据
        data  = data.decode(encoding='utf-8').upper()
        data = "at %s :%s"%(ctime(),data)
        udpServer.sendto(data.encode(encoding='utf-8'),addr)
        #发送数据
        print('...recevied from and return to :',addr)
    
    udpServer.close()
    

    欢迎进一步交流本博文相关内容:

    博客园地址 : http://www.cnblogs.com/AsuraDong/

    CSDN地址 : http://blog.csdn.net/asuradong

    也可以致信进行交流 : xiaochiyijiu@163.com

    欢迎转载 , 但请指明出处  :  )


  • 相关阅读:
    asp.net c#中去掉最后一个字符和去掉第一个字母
    两个div并排
    VS.Net2005中使用本地化功能实现多语言的切换
    gridview嵌套DropDownList選定值[转]
    C# 获取系统时间
    NERDTree,好用的文件浏览器
    通过$.browser来判断浏览器
    vim 智能提示
    让vim显示函数列表
    vim中文乱码解决方法
  • 原文地址:https://www.cnblogs.com/AsuraDong/p/7003257.html
Copyright © 2011-2022 走看看