python高级网络编程_python高级编程——网络编程(二)
UDP
概念和介绍
UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并 不能保证它们能到达目的地。
UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整 的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否 到达目的地,到达目的地的时间、次序以及内容的正确性都是不能被保证的
UDP适用于语音广播、视频会议等其他的数据业务
UDP通信过程:
UDP通信比较简单
先写一个UDP服务器,一般步骤如下:
1、首先是要创建一个socket套接字:socket()
2、服务器一般是需要一个固定的IP地址和固定端口号,服务器就要绑定这个IP地址和端口号:bind()
3、只有服务器和客户端绑定相同的IP地址,服务器和客户端才可以互相接收数据和发送数据,常理来想,服务器是一只被开启的,也是一直接受数据,所以在接受数据的过程中,我们需要无限循环:recv()
4、如果我们要发送数据给客户端,客户端也需要绑定上面的地址,然后需要调用相应的函数sendto()
importsocket#UDP#创建一个服务器socket套接字
server_socket =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#服务器的IP地址和端口号
address = ("127.0.0.1", 9999)#服务器绑定地址
server_socket.bind(address)
data= server_socket.recv(2048).decode("UTF-8")#数据处理,这里打印出来端
print("服务器接受的数据:", data) # 服务器接受的数据:我是一个客户端
若想服务器接受数据,就要写UDP客户端程序了
importsocket#客户端需要创建一个套接字
client_socket =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#客户端需要连接服务器,必须先知道服务器的IP地址和端口号
address = ("127.0.0.1", 9999)#连接服务器
client_socket.connect(address)#这个数据是将要发送的数据
data = "我是一个客户端"client_socket.sendto(data.encode("UTF-8"), address)
UDP总结
1. udp是TCP/IP协议族中的一种协议能够完成不同机器上的程序间的数据通 信
2. udp服务器、客户端
udp的服务器和客户端的区分:往往是通过请求服务和提供服务来进行区分
请求服务的一方称为:客户端
提供服务的一方称为:服务器
3. udp绑定问题
一般情况下,服务器端,需要绑定端口,目的是为了让其他的客户端能够正确发送 到此进程
客户端,一般不需要绑定,而是让操作系统随机分配,这样就不会因为需要绑定的 端口被占用而导致程序无法运行的情
python高级网络编程_python高级编程——网络编程(二)相关推荐
- python socket编程_Python学习记录-socket编程
1. OSI七层模型详解 2. Python socket 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答 ...
- python fortran混合编程_python fortran c 混合编程
背景 因为编程需要使用python和fortran(或者c,c++)混合编程,所以进行了一些资料查询和实验.首先尝试了f2py,但是这个项目已经很久没有更新,为了以后兼容性考虑(后期可能会使用到c++ ...
- python高级猜数字_python高级猜数字
安装python之后,我们就可以使用python自带的开发集成环境做一详情>> pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方 ...
- python 栈实现 加减乘除_Python自学笔记,编程中简单的加减乘除
日常生活中,我们都会有过很多的加减乘数的基本运算.今天我们来看看Python这么编程语言,是怎么进行简单的基本运算的.废话不多说,我们开始吧开发工具:IDLE (Python 3.7 64-bit)这 ...
- python高级网络编程_Python高级网络编程系列之基础篇
一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...
- python高级属性 用法 编程_python高级编程之面向对象高级编程
1 面向对象编程 面向对象这节比较简单,就稍微总结几个特殊的点. 特殊方法__init__前后分别有两个下划线,__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init ...
- python高级数据筛选_python高级编程,列表字典集合相关的数据筛选
每天坚持学习一点,进行数据复盘,学习就是不一样 python高级编程,列表字典集合相关的数据筛选 #先看看第一个列表筛选 2017 9 16 高效python编程的一个案例:from random i ...
- 怎样学好python安全编程_Python高级安全编程 - 安全牛课堂 - 领先的信息安全在线教育平台
{ "i18nChapterName": "章", "i18nUnitName": "节", "i18nLes ...
- python套接字编程_Python套接字编程(1)——socket模块与套接字编程
在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...
最新文章
- linux 进程的作用,linux的几个进程的作用
- 零基础学python爬虫-零基础学习python_爬虫(53课)
- java类多例_Java多例设计模式实例详解
- threadlocal使用_多方位点评ThreadLocal,细看各大开源软件实现
- SSH三大框架注解整合(二)
- python之函数用法islower()
- 一卡通vip充值消费线上oracle库服务器故障排查过程
- 为什么 ++[[]][+[]]+[+[]] = 10 ?
- [学习笔记]后缀平衡树
- LeetCode 2. Add Two Numbers (两数相加)
- android 城市列表 横屏,Android Launcher3去掉所有应用列表,横屏时左右两侧的留空...
- 激光雷达障碍物检测:点云聚类算法
- ORACLE通过身份证号计算年龄
- win7计算机丢失msvcp110dll,win7系统出现msvcr110.dll丢失的详细解决步骤
- juniper防火墙开启NAT功能
- 必看!2021年云计算行业五大趋势,云南昆明企业小型云计算平台搭建及解决方案
- 【Matlab】一、解常微分方程ODE
- NYOJ_170聪明的kk
- 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶
- Python——输出大写英文字母
热门文章
- 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例
- 【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
- Go的日志模块glog调研笔记
- leetcode-440 字典序的第K小数字
- C++的STL队列实现栈
- C# 篇基础知识11——泛型和集合
- GridView单元格取值显示为nbsp;
- Python 基础 - Day 2 Assignment - ShoppingCart 购物车程序
- IOS的钥匙串,确保本地隐私数据的安全
- 控件的实际大小与呈现大小