UDP通信——使用python实现简单的UDP通信

UDP 的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一个简单的面向数据报的传输层协议。UDP的发起和接受是不需要经过连接的,仅仅只需要发送在对应端口上进行监听接受即可,不需要两个客户端一定是连接的。
这里大家要区别的是:另一种常用的通信协议是TCP协议,两者的区别是TCP是面向连接的、传输可靠的,UDP是面向数据报的、不可靠的。它一旦把数据发送出去,就不保留备份数据,发出去的数据有没有被收到也不进行校验,容易丢包。
虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。下面是接收和发送端的程序代码:

接收端 server.py

# -*- coding: utf-8 -*-import socket  #导入socket模块
import time #导入time模块#server 接收端# 设置服务器默认端口号
PORT = 8000# 创建一个套接字socket对象,用于进行通讯# socket.AF_INET 指明使用INET地址集,进行网间通讯# socket.SOCK_DGRAM 指明使用数据协议,即使用传输层的udp协议
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("192.168.43.131", PORT)
server_socket.bind(address)  # 为服务器绑定一个固定的地址,ip和端口
server_socket.settimeout(10)  #设置一个时间提示,如果10秒钟没接到数据进行提示while True:#正常情况下接收数据并且显示,如果10秒钟没有接收数据进行提示(打印 "time out")#当然可以不要这个提示,那样的话把"try:" 以及 "except"后的语句删掉就可以了try:  now = time.time()  #获取当前时间# 接收客户端传来的数据 recvfrom接收客户端的数据,默认是阻塞的,直到有客户端传来数据# recvfrom 参数的意义,表示最大能接收多少数据,单位是字节# recvfrom返回值说明# receive_data表示接受到的传来的数据,是bytes类型# client  表示传来数据的客户端的身份信息,客户端的ip和端口,元组receive_data, client = server_socket.recvfrom(1024)print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(now))) #以指定格式显示时间print("来自客户端%s,发送的%s\n" % (client, receive_data))  #打印接收的内容except socket.timeout:  #如果10秒钟没有接收数据进行提示(打印 "time out")print "tme out"

发送端 client.py

# -*- coding: utf-8 -*-
import socket
import time#client 发送端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
PORT = 8000while True:start = time.time()  #获取当前时间print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(start)))  #以指定格式显示当前时间msg=raw_input("本客户端192.168.43.131,请输入要发送的内容:")  server_address = ("192.168.43.131", PORT)  # 接收方 服务器的ip地址和端口号client_socket.sendto(msg, server_address) #将msg内容发送给指定接收方now = time.time() #获取当前时间run_time = now-start #计算时间差,即运行时间print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(now)))print("run_time: %d seconds\n" %run_time)

upd通信先打开server 或者 client 都可以。找到程序所在文件夹,在文件夹打开终端并输入命令

python client.py

运行程序,结果如图:

然后再打开一个终端,输入命令:

python server.py

打开服务器。
然后就可以在客户端输入要发送的数据,结果如图:

如果想要一直发送相同的数据的话,就把client端的

      msg=raw_input("本客户端192.168.43.131,请输入要发送的内容:")

更改一下,比如:

      msg=“This is a udp program...”

结果如图:

UDP通信——使用python实现简单的UDP通信相关推荐

  1. java 通信 教程_Java实现简单的socket通信教程

    今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了. 今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有pa ...

  2. 半双工通信java_Socket实现一个简单的半双工通信

    Socket是客户端进行在网络与服务器进行数据交互的一种基本通信方式,通信有三种通信,即单工,半双工,和全双工. 所谓单工,就是只能够进行单向通信,如bb机. 而半双工就是一来一回的通信方式,如对讲机 ...

  3. UDP通信——使用python通过UDP通信来发送和解析数据

    UDP通信--使用python通过UDP通信来发送和解析数据 经常我们要发送的信息是结构化的数据,此时发送和接收数据结构就是一个很基本的工作,怎样来实现呢? 发送和接收数据结构我们要用到 python ...

  4. Socket之UDP客户端【Python】

    下面是其他相关的终端的创建: Socket之TCP服务器[Python] Socket之TCP客户端[Python] Socket之UDP服务器[Python] 在我们编写的4个终端中,UDP客户端的 ...

  5. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景

    上一篇聊完一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP.来看看传输层位于OSI七层协议 ...

  6. Python使用Tcp、Udp

    TCP/IP四层网络模型: 1. 链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序.计算机中对应的网络接口卡 2. 网络层(互联网层):处理分组在网络中的活动,比如分组的选路 3. 传输 ...

  7. Socket之UDP服务器【Python】

    下面是其他相关的终端的创建: Socket之TCP服务器[Python] Socket之TCP客户端[Python] Socket之UDP客户端[Python] UDP服务器不需要TCP服务器的那么多 ...

  8. [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能

    2019独角兽企业重金招聘Python工程师标准>>> 何为UDP(User Datagram Protocol)? 从baidu摘过来一段:UDP,用户数据报协议,与所熟知的TCP ...

  9. python udp 丢包_Python语言---TCP、UDP

    1. 网络传输方式 网络通信中根据数据发送方法进行多种分类. 分类方法主要分为两种:面向有连接型. 面向无连接型. 面向无连接型 面向无连接型则 不要求建立和断开连接. 发送端可于任何时候自由发送数据 ...

最新文章

  1. 千万QPS毫秒响应:快手数据中台建设实践
  2. python获取小时分钟
  3. Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)
  4. 【造轮子】打造一个简单的万能Excel读写工具
  5. MATLAB实战系列(二十二)-matlab三维图形绘制案例最全集锦(毕设和数学建模必看)
  6. ABAP--如何建立通过sap表维护工具来维护自定义表TCODE
  7. formal timetable for cambridge
  8. (7)MySQL的事务
  9. 查看当前Linux系统的发行版本命令详解
  10. 怎样打开android设备,在app中打开android设备的存储
  11. 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法(FA-GN与IC-GN)
  12. ICPCCamp 2016 Day 6 - Spb SU and Spb AU Contest(Colored path-dp)
  13. jboot 在拦截器中如何获取 请求的IP地址
  14. pandas自动化实战小任务1--对excel表格分 供应商 付款年月 进行汇总(涉及根据即有相同也有不同的index的表格合并)公司的数据
  15. 基于单片机的电子时钟
  16. Linux 用户文件磁盘网络进程指令
  17. C51单片机的压缩BCD码相加程序
  18. php通过api获取天气信息,调用API获取城市天气信息
  19. 步进电机工作原理与编程
  20. Elevation阴影使用

热门文章

  1. python函数实验总结_Python程序设计实验报告:实验六 函数
  2. PPT基础(二十二)裁剪图片
  3. (8)Artemis检测(僵尸连接、慢消费者、代理异常)
  4. win10如何修改锁屏(欢迎界面)的用户名
  5. Android高级控件----AdapterView与Adapter详解
  6. CentOS7 安装php7.4
  7. 操作系统之进程调度 (十一) --- 进程调度的时机、进程调度的方式、进程调度的狭义与广义...
  8. GUI小工具-网盘搜索器
  9. 天梯赛题目练习L1-001,L1-002,L1-003
  10. 记一次requestAnimationFrame之后页面崩溃、内存泄漏问题