linux中UDP程序流程、客户端、服务端

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

 

优点:传输速度快

缺点:不可靠

 

socket的中文意思是接插件:

 

创建socket

在 Python 中 使用socket 模块的类 socket 就可以完成:

 

socket.socket(AddressFamily,Type)

说明:

函数 socket.socket 创建一个 socket,返回该 socket的描述符,该函数带有两个参数:

  • Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
  • Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

 

udp服务端:

import socket

# 1. 创建套接字
server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#2. bind绑定ip地址和端口,为元祖tuple类型
#ip如果不指明,表示本机的任何一个ip地址
server_addr = (
"", 8080)
server_sock.bind(server_addr)

while True:
   
# recv方法接收发送过来的数据
   
# 返回值为接收到的数据,参数(这里为1024)表示本次收取数据的最大字节数
   
# receive_data = server_sock.recv(1024)
   
# recvfromrecv方法类似,不同的是可以将发送数据的客户端的地址也返回
    receive_data, client_addr =server_sock.recvfrom(
1024)
   
# 注意python3中收到的数据receive_databytes类型
   
# print(client_addr, ": ",receive_data)
   
# bytes数据转换为字符串类型
    msg = receive_data.decode(
"utf-8")
   
# 将收到的数据显示输出
    print(client_addr,
": ", msg)
   
# 我们假定如果客户端发送了quit,我们就关闭服务端的套接字(即关闭服务端)
   
if msg == "quit":
        server_sock.close()
       
break

测试:

# -u 表示使用udp协议
# nc -u 服务器ip 服务器端口
nc -u
127.0.0.1 8080

 

udp客户端

import socket

# 1. 创建套接字
client_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 服务器地址
server_addr = (
'127.0.0.1', 8080)

data = input("请输入要发送的内容:")
#只要用户输入的数据不为空,就向服务器端发送
while data:
   
# 2. 使用sendto方法向服务器发送数据
   
# sendto(bytes类型要发送的数据, 对方的地址)
    client_sock.sendto(data.encode(
"utf-8"),server_addr)
    data = input(
"请输入要发送的内容:")

# 当用户输入的数据为空(""), 关闭客户端套接字
client_sock.close()

测试

服务端与客户端的程序我们都已完成,可以同时开启进行测试。

我们也可以用nc充当udf服务端来单独测试客户端程序。

# -l 表示作为服务端开启,进行监听listen
# -u表示使用udp协议
# nc-lu 绑定的服务器ip地址 端口
nc -lu
127.0.0.1 8080

 

网络编程中的广播

import socket

# 创建udp套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 告诉系统内核刚创建的套接字用来进行广播
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,
1)
data = input(
"请输入要广播的内容:")
while data:
   
# 注意对于广播对象地址的设置
   
# <broadcast>表示广播地址
    s.sendto(data.encode(
"utf-8"), ("<broadcast>", 8080))
    data = input(
"请输入要广播的内容:")

s.close()

 

udp总结

1.udp是传输层的一种协议,不需要进行连接就可以用来发送和接收数据,但不保证数据的可靠传输。

2. udp服务器、客户端

1udp的服务器和客户端的区分:往往是通过请求服务提供服务来进行区分

2请求服务的一方称为:客户端

3提供服务的一方称为:服务器

3. udp绑定问题

1、一般情况下,服务器端,需要绑定端口,目的是为了让其他的客户端能够正确发送到此进程

2、客户端,一般不需要绑定,而是让操作系统随机分配,这样就不会因为需要绑定的端口被占用而导致程序无法运行的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1041. 困于环中的机器人

文章目录1. 题目2. 解题1. 题目 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 1 个单位“L”&#xff1a;左转 90 度“R”&#xff1a;右转 90 度 机器人按顺序执行指令 ins…

Javascript实现合并单元格

Web上的报表或表格应用&#xff0c;较为复杂的表格操作一般都比较难实现&#xff0c;这里介绍一下用ComponentOne Studio for ASP.NET Wijmo中的SpreadJS&#xff0c;可以实现一些较为复杂的表格操作&#xff0c;个人认为他模仿桌面应用的操作体验非常不错&#xff0c;虽然我并…

R语言第八讲续 评估模型之自助法分析案例

题目 今天来用自助法评估一下ISLR 程序包中的 Portfolio (金融资产)数据集的预测函数 相关资料 自助法&#xff08;Bootstraping&#xff09;是另一种模型验证&#xff08;评估&#xff09;的方法&#xff08;之前已经介绍过单次验证和交叉验证&#xff09;。其以自助采样&…

python中常见的15中面试题

下面这些问题涉及了与Python相关的许多技能&#xff0c;问题的关注点主要是语言本身&#xff0c;不是某个特定的包或模块。每一个问题都可以扩充为一个教程&#xff0c;如果可能的话。某些问题甚至会涉及多个领域。 我之前还没有出过和这些题目一样难的面试题&#xff0c;如果你…

LeetCode 1039. 多边形三角剖分的最低得分(区间DP)

文章目录1. 题目2. 解题1. 题目 给定 N&#xff0c;想象一个凸 N 边多边形&#xff0c;其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。 假设您将多边形剖分为 N-2 个三角形。 对于每个三角形&#xff0c;该三角形的值是顶点标记的乘积&#xff0c;三角剖分的分数是…

CentOS6.4安装包初识

LiveCD 一般用来修复系统使用&#xff0c;有容量很小&#xff0c;不用安装&#xff0c;可以自启动等特性。bin DVD也具有同 样的功能&#xff0c;但是体积较大&#xff0c;所以会有live DVD。   LiveDVD 与LiveCD 相同是不需要安装就直接使用的&#xff0c;要安装的话还是要安…

R语言第九讲 验证集法

目的 为了更好的熟悉分析定性变量的逻辑斯谛回归分析的应用和验证集法(评估拟合拟合模型的一种方法&#xff09;&#xff0c;用一个简单的示例来介绍一下它们在分析数据中的应用。 题目 在 Default 数据集上用income 和 balance 做逻辑斯谛回归来预测 default的概率。现…

总结python中基本的面试题

1.Python是如何进行内存管理的&#xff1f; 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 Python内部使用引用计数&#xff0c;来保持追踪内存中的对象&#xff0c;所有对象都有引用计数。 引用计数增加的情况&#xff1a; 1&a…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面

文章目录1. 训练&#xff0c;验证&#xff0c;测试集2. 偏差&#xff0c;方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout&#xff08;随机失活&#xff09;正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化1…

动态规划 POJ 1088 滑雪

Description Michael 喜欢滑雪百这并不奇怪&#xff0c; 因为滑雪的确很刺激。可是为了获得速度&#xff0c;滑的区域必须向下倾斜&#xff0c;而且当你滑到坡底&#xff0c;你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个 区域中最长底滑坡。区域由一个二维数组…

R语言第十讲 逻辑斯蒂回归

模型函数介绍 Logistic Regression 虽然被称为回归&#xff0c;但其实际上是分类模型&#xff0c;并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。 Logistic 回归的本质是&#xff1a;假设数据服从这个Logistic 分布&#xff0c;然后使用极…

网络上总结python中的面试题

【题目:001】| 说说你对zen of python的理解&#xff0c;你有什么办法看到它? Python之禅,Python秉承一种独特的简洁和可读行高的语法&#xff0c;以及高度一致的编程模式&#xff0c;符合“大脑思维习惯”&#xff0c;使Python易于学习、理解和记忆。Python同时采用了一条极简…

阿里云 超级码力在线编程大赛初赛 第3场 题目4. 完美字符串

文章目录1. 题目2. 解题1. 题目 描述 定义若一个字符串的每个字符均为’1’&#xff0c;则该字符串称为完美字符串。 给定一个只由’0’和’1’组成的字符串s和一个整数k。 你可以对字符串进行任意次以下操作 选择字符串的一个区间长度不超过k的区间[l, r]&#xff0c;将区间…

(译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机

Windows Azure的7月更新:SQL数据库&#xff0c;流量管理&#xff0c;自动缩放&#xff0c;虚拟机 今早我们释出一些很棒的Windows Azure更新。这些新的提升包括&#xff1a;SQL数据库&#xff1a;支持SQL自动导出和一个新的高级层SQL数据库选项流量管理&#xff1a;在HTML门户的…

R语言第十一讲 决策树与随机森林

概念 决策树主要有树的回归和分类方法&#xff0c;这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域。对某个给定待预测的观 测值&#xff0c;用它所属区域中训练集的平均值或众数对其进行预测。 基于树的方法简便且易于解释。但预测准确性通常较低。如图…

python面试题汇总(1)

1. (1)python下多线程的限制以及多进程中传递参数的方式   python多线程有个全局解释器锁&#xff08;global interpreter lock&#xff09;&#xff0c;这个锁的意思是任一时间只能有一个线程使用解释器&#xff0c;跟单cpu跑多个程序一个意思&#xff0c;大家都是轮着用的&…

阿里云 超级码力在线编程大赛初赛 第3场 题目1. 最大公倍数

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/15179470890799741/85251759933690467 2. 解题 看的大佬的解题&#xff0c;很强&#xff01; class Solution { public:/*** param a: Left margin* param b: Right margin* return: return t…

Javascript:前端利器 之 JSDuck

背景 文档的重要性不言而喻&#xff0c;对于像Javascript这种的动态语言来说就更重要了&#xff0c;目前流行的JDoc工具挺多的&#xff0c;最好的当属JSDuck&#xff0c;可是JSDuck在Windows下的安装非常麻烦&#xff0c;这里就写下来做个备忘。 JSDuck生成的文档效果 JSDuck安…

Ubuntu 扩展内存或断电之后卡在 /dev/sda1 clean 和 /dev/sda1 recovering journal

当ubuntu虚拟机硬盘空间不够用的时候&#xff0c;往往会出现新增扩展硬盘空间之后&#xff0c;出现开机卡死的现象。 通过查阅相关资料&#xff0c;排坑如下&#xff1a; 一、原VM硬盘空间已满 当原VM硬盘空间已满的情况下&#xff0c;千万不要重启或者关机操作&#xff0c;极…

阿里云 超级码力在线编程大赛初赛 第3场 题目2. 房屋染色(DP)

文章目录1. 题目2. 解题1. 题目 有n个房子在一列直线上&#xff0c;现在Bob需要给房屋染色&#xff0c;共有k种颜色。 每个房屋染不同的颜色费用也不同&#xff0c;Bob希望有一种染色方案使得相邻的房屋颜色不同。 但Bob计算了使相邻房屋颜色不同的最小染色费用&#xff0c;发…