推荐图书:

《Python可以这样学》,ISBN:9787302456469,董付国,清华大学出版社,第9次印刷

图书详情(京东)

董付国老师17本Python系列图书均提供配套教学资源。

===============

功能描述:

创建UDP套接字进行通信,重点演示UDP套接字对象方法connect()和bind()的作用。

首先,编写一个“服务端”代码,用来被动接收发送端的信息然后做出一定的响应,向对方连续发送10个字节串。代码如下:

这个接收端的功能很简单,就是收到消息后原路发回10个信息。如果收到的是bye就关闭套接字。

接下来我们编写一个发送端程序,代码如下:

正常情况下,这两个程序会工作的很好,如图:

但是如果这个过程被干扰,就不会这样顺利了。编写下面这个代码的人通过某个途径知道了发送端“UDP套接字调用connect_demo2.py"正在使用的端口号,然后直接向其发送信息,试图干扰1和2的工作。代码如下:

在攻击者的干扰下,原来的通信双方正常通信过程被干扰,示例如下:

如何避免demo2接收到非通信对方发来的干扰信息呢?其实不难做到,只需要在接收到信息之后检查一下对方地址就可以了,例如:

这样的话,demo3的运行过程就不会收到attack的影响了,运行过程如下:

这样处理虽然可以解决问题,但略显笨拙。实际上套接字已经提供了更好的解决方案,那就是在UDP套接字发送端调用connect()方法明确指定通信对方地址,这样的话就会在底层自动过滤其他地址发来的任何信息了,例如:

在UDP发送端调用connect()方法注册指定地址为默认通信地址之后,可以使用send()直接向默认地址发送信息,也可以使用recv()直接从对方接收信息,不再需要使用sendto()和recvfrom(),并且recv()会自动过滤其他地址发来的信息,可以避免被第三方攻击。运行过程如下:

由上可知,UDP是无连接协议这一点是一定的,没有任何疑问。但UDP套接字确实是可以调用connect()方法的,只不过调用connect()并不是真的要连接谁,只是在系统中标记一下通信对方的地址。这样的话,收发信息的代码可以简洁很多,并且可以避免来自第三方的攻击。

Python演示--UDP套接字真的无连接吗?相关推荐

  1. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现

    上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...

  2. Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

    上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...

  3. Python之网络编程(TCP套接字与UDP套接字)

    文章目录 基于tcp的套接字 实现目标 tcp服务端源码 tcp客户端源码 tcp效果实现 基于udp的套接字 udp作用介绍 udp服务端源码 udp客户端源码 udp效果实现 用udp实现一个时间 ...

  4. UDP套接字编程——Python语言描述

    首先,回顾一下.在我们使用Socket编程之前的一些网络的概念. IP:它是用来标识处于Internet之中的端系统的. MAC:它是用于在同一局域网中标识不同的计算机的. 端口号:它是用来标识同一台 ...

  5. python网络编程——套接字名与DNS

    1.主机名与套接字. 主机名. 我们浏览网页时很少直接输入原始IP地址,大多时候都是输入主机名.如:www.baidu.com.当我们输入主机名时,我们的请求并没有直接转到所请求的服务器而是转到了自己 ...

  6. 计网实验原理-TCP/UDP套接字编程

    计算机网络自顶向下结构--第7版 第二章实验,套接字编程 代码运行环境:window10,python 3.8.对于书上代码略作修改. 进程与计算机网络之间的接口 多数应用程序是由通信进程队组成的,每 ...

  7. JavaEE 网络编程示例1 UDP套接字数据报编程 == 一发一收

    鲁吼呀,胶己人! 文章目录 JavaEE & 网络编程示例1 & UDP套接字数据报编程 ==> 一发一收 1. 协议分层(回顾) 2. 套接字 Socket 2.1 UDP与T ...

  8. 使用DatagramSocket发送、接收数据(Socket之UDP套接字)

    2019独角兽企业重金招聘Python工程师标准>>> 创建一个DatagramSocket实例,并将该对象绑定到指定IP地址.指定端口. 通过上面三个构造器中的任意一个构造器即可创 ...

  9. 网络编程 UDP套接字

    第十二章 UDP套接字 12.1 前言 上一章讲述了TCP通信方式,它是基于流的面向连接的网络通信.UDP是IP协议上的另一种传输协议. TCP和UDP都是端到端的通信协议,都处于TCP/IP网络模型 ...

最新文章

  1. eclipse导入jar包_在命令行上操作JAR,WAR和EAR
  2. 企业网络推广下的B站二次上市:致力于造就国内最具活力和创造力的内容社区...
  3. qtextbrowser 大量数据卡顿_800万行的数据,Excel 10秒钟就能完成统计?这个工具太良心了!...
  4. Java Lambda 表达式的常见应用场景
  5. 【Lucene】Lucene的工作原理
  6. InvocationHandler的invoke方法如何被调用?
  7. jshell_五分钟的JShell
  8. jar包直接拷贝到WEB-INF/lib下和以userLibrary引入的区别
  9. 兰州理工大学linux试题,兰州理工大学学期《电子技术》试题.doc
  10. *nix下部署第三方动态库文件
  11. struts2学习笔记(二) 初识Struts2
  12. Application.messagebox对话框样式
  13. JavaSE集合练习题
  14. 计算机基础ps变换蝴蝶,PS利用自由变换制作飞舞的蝴蝶
  15. you-get下载优酷视频报错:用户账户异常、请重新登录
  16. 华为首个芯片工厂封顶!
  17. 正则表达式详解(Perl)
  18. unity获取电磁笔压感_一种智能终端电磁压感笔的制作方法
  19. java SSH整合 SHIT
  20. xposed微信红包

热门文章

  1. 网站服务器日志分析,如何进行网站日志分析(理论篇)
  2. 载波聚合或双连接的方式进行_首发天玑1000+!iQOO Z1来了:5G+5G双卡双待、双WiFi 6...
  3. nt服务器需要的协议,构建没有NT服务器的NT域
  4. android通讯录备份软件下载,通讯录同步助手
  5. c语言输入一串数字存入数组_在Excel中快速输入,竟是输入一串数字?
  6. 专升本c语言名词解释题_福建普通高校专升本各类别考试题型及分值
  7. input和button放在同一行_黑龙江作家协会冯殿波散文集《足音》84情系东保卫,魅力采风行...
  8. log4j mysql 单引号_log4j写数据库存在单引号问题
  9. linux用pe大小做逻辑卷,Linux常用命令之--逻辑卷
  10. linux nginx安装php5.5,linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装