python六十八课——网络编程之UDP协议
1.1 概述 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP的交换过程如下图所示。
udp_server.py
import socket
'''
使用udp编写服务端的程序:
核心:得到socket对象
在创建对象的过程中,需要传入两个参数:
第一个参数:满足(匹配)ipv4的规则(socket.AF_INET)
第二个参数:判断到底是满足tcp协议编程(socket.SOCK_STREAM)还是udp协议编程(socket.SOCK_DGRAM)
面向无连接的编程
'''
#得到服务端的socket对象
udp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #绑定服务器的ip和端口号
udp_server=('10.11.63.132',6666)
udp_server_socket.bind(udp_server) #循环接受和发送数据
while 1:
#接受客户端发送过来的数据,返回两个对象:1).数据内容 2).客户端的信息(元祖对象)
recv_data,cilent_info=udp_server_socket.recvfrom(1024)
print(recv_data)
print(cilent_info)
print('客户端说:' + recv_data.decode('utf-8')) #发送数据给客户端
data=input('>>>: ')
udp_server_socket.sendto(data.encode('gbk'),cilent_info) #关闭套接字对象
udp_server_socket.close()
udp_cilent.py
import socket
'''
使用udp编写服务端的程序:
核心:得到socket对象
在创建对象的过程中,需要传入两个参数:
第一个参数:满足(匹配)ipv4的规则(socket.AF_INET)
第二个参数:判断到底是满足tcp协议编程(socket.SOCK_STREAM)还是udp协议编程(socket.SOCK_DGRAM)
面向无连接的编程
'''
#得到服务端的socket对象
udp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #绑定服务器的ip和端口号
udp_server=('10.11.63.132',6666)
udp_server_socket.bind(udp_server) #循环接受和发送数据
while 1:
#接受客户端发送过来的数据,返回两个对象:1).数据内容 2).客户端的信息(元祖对象)
recv_data,cilent_info=udp_server_socket.recvfrom(1024)
print(recv_data)
print(cilent_info)
print('客户端说:' + recv_data.decode('utf-8')) #发送数据给客户端
data=input('>>>: ')
udp_server_socket.sendto(data.encode('gbk'),cilent_info) #关闭套接字对象
udp_server_socket.close()
返回目录
python六十八课——网络编程之UDP协议的更多相关文章
- python六十九课——网络编程之TCP协议
1.1 概述: TCP协议通过三次握手协议将客户端与服务器端连接,两端使用各自的Socket对象.Socket对象中包含了IO流,供数据传输. 即:TCP协议在客户端与服务器端通过Socket组成了I ...
- python学习笔记(十八)网络编程之requests模块
上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出 ...
- java 25 - 4 网络编程之 UDP协议传输的代码优化
UDP协议的输出端: /* UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) */ public c ...
- java 25 - 4 网络编程之 UDP协议传输思路
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...
- 网络编程之UDP协议
UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提 ...
- 网络编程之UDP编程
网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...
- Java网络编程之UDP
Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方 ...
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- 【python之路35】网络编程之socket相关
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
随机推荐
- vuex 、store、state (转载)
vuex 文档 https://vuex.vuejs.org/zh/guide/state.html
- 1.shell学习之常用语句
本章学习内容: 1.常见符号 2.命令分隔符-分号";" 3.双分号 ";;" 4. '单引号和"双引号 5.`反引号和$() 6.${}和$ 7.冒 ...
- 【Java基础】16、小数的浮点型和定点型
一.简介 1.对于不需要任何准确计算精度的数字可以直接使用浮点型,但是如果需要精确计算的结果,则必须使用定点型(BigDecimal类) 浮点型:float,double 定点型:BigDecimal ...
- 10个常见的JavaScript BUG
译者按: 安全起见,在开发中我基本不用==. 原文: 10 COMMON JAVASCRIPT BUGS AND HOW TO AVOID THEM 译者: Fundebug 为了保证可读性,本文采用 ...
- Promise是Monad吗?
译者按: 近年来,函数式语言的特性都被其它语言学过去了. 原文: Functional Computational Thinking — What is a monad? 译者: Fundebug 为 ...
- 实现响应式——CSS变量
CSS 变量是 CSS 引入的一个新特性,目前绝大多数浏览器已经支持了,它可以帮助我们用更少的代码写出同样多的样式,大大提高了工作效率,本篇文章将教你如何使用 CSS 变量(css variable) ...
- 1970年// iPhone “变砖”后可继续正常使用的解决方案
0.解决方案 说话先说重点,“变砖”后的iphone怎么正常使用. 拆开后盖,给电源和处理器之间断下电就OK了. 1.事件来源 对于iPhone和iPad,把时间手动设置到1970年5月以前会出现“变 ...
- 父类通过泛型获得子类Class类型 以及Type体系
1.背景介绍 在实现SSH框架中,DAO层向数据库持久化的过程中,因为大部分保存对象的方法都会调用到sava():所有索性就把save delete update select 方法进行封装到父类中, ...
- 浅谈Android 混淆和加固
混淆: 针对项目代码,代码混淆通常将代码中的各种元素(变量.函数.类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度. 虽然代码混淆可以提高反编译的门槛,但是对开发者 ...
- Android为TV端助力 最详细的动画大全,包括如何在代码和在XML中使用
一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画 ...