UDP

概念和介绍

UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。

UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并 不能保证它们能到达目的地。

UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整 的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否 到达目的地,到达目的地的时间、次序以及内容的正确性都是不能被保证的

UDP适用于语音广播、视频会议等其他的数据业务

  UDP通信过程:

UDP通信比较简单

先写一个UDP服务器,一般步骤如下:

1、首先是要创建一个socket套接字:socket()

2、服务器一般是需要一个固定的IP地址和固定端口号,服务器就要绑定这个IP地址和端口号:bind()

3、只有服务器和客户端绑定相同的IP地址,服务器和客户端才可以互相接收数据和发送数据,常理来想,服务器是一只被开启的,也是一直接受数据,所以在接受数据的过程中,我们需要无限循环:recv()

4、如果我们要发送数据给客户端,客户端也需要绑定上面的地址,然后需要调用相应的函数sendto()

import socket

# 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客户端程序了

import socket

# 客户端需要创建一个套接字
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高级编程——网络编程(二)的更多相关文章

  1. python高级之网络编程

    python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...

  2. 第六篇:python高级之网络编程

    python高级之网络编程   python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...

  3. Python之路 - 网络编程之粘包

    Python之路 - 网络编程之粘包 粘包

  4. Python之路 - 网络编程初识

    Python之路 - 网络编程初识 前言

  5. Python中级 —— 04网络编程

    网络编程 网络编程对所有开发语言都是一样的,Python也不例外.用Python进行网络编程,就是在Python程序本身这个进程内,连接别的服务器进程的通信端口进行通信. TCP编程 TCP建立可靠连 ...

  6. python语法基础-网络编程-TCP协议和UDP协议

    ###############    网络编程    ############## """ 网络编程 学习了Python基础之后,包括函数,面向对象等,你就可以开发了,你 ...

  7. python高级编程——网络编程(一)

    计算机网络基础 概念:计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信.而网络编程就是开发计算机网络应用程序 计算机的通信协议 概念:计 ...

  8. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

  9. python 之socket 网络编程

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  10. 周末班:Python基础之网络编程

    一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据, ...

随机推荐

  1. 使用GCP_EC2云服务器搭部署网络服务

    首先,在此阿里云/腾讯云/华为云购买一个云服务器推荐使用阿里云的 首先链接你的VPS,可以使用X-shell / Putty / SecureCRTPortable 等SSH链接工具 注意:如果不知道 ...

  2. Rust第二次综合练习

    啊,啊,啊 原来我一直用的linux rust1.1的老版本, 很多书上的写法都不行,得调试. 今天早上,换成了win rust1.3版本, 于是,可以按书上标准的语法来弄了. 一,main.rs u ...

  3. 201871010135 张玉晶《面向对象程序设计(java)》第十四周学习总结

    项目 内容 这个作业属于哪个过程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/11963 ...

  4. continue and break

    #1.continue终止当前循环开始下一次循环count = 0while count < 10: if count == 7: count = count +1 continue print ...

  5. Basics of Algorithmic Trading: Concepts and Examples

    https://www.investopedia.com/articles/active-trading/101014/basics-algorithmic-trading-concepts-and- ...

  6. LG1983 「NOIP2013」车站分级 拓扑排序

    问题描述 LG1983 题解 考虑建立有向边\((a,b)\),代表\(a\)比\(b\)低级. 于是枚举每一辆车次经过的车站\(x \in [l,r]\),如果不是车辆停靠的车站,则从\(x\)向每 ...

  7. LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)

    做题重心转移到 LOJ 了. 至于为什么,如果你知道“……”的密码,就去看吧. LOJ 上用户自创题大多数都不可做,今天看到个可做题(而且还是个水题),就来做了一发. 明显枚举立方根.(以下令 $m= ...

  8. Java高级工程师常见问题

    MySQL数据库调优   定位慢查询得到生产环境那些sql语句响应慢,根据执行计划进行分析调优事物管理索引结构(B+树)平衡二叉树.B树.B+树分库分表后,如何解决查询    使用第三方数据库中间件( ...

  9. thinkphp5.1 - twig模板-全局变量

    thinkphp5.1 - twig模板-全局变量我们在定义 ccs 之类的静态文件的时候,经常会使用<link rel="stylesheet" href="__ ...

  10. thinkphp5.0学习(九):TP5.0视图和模板

    原文地址:http://blog.csdn.net/fight_tianer/article/details/78602711 一.视图 1.加载页面 1.继承系统控制器类 return $this- ...