UDP Ping程序实现--第1关:Ping服务端创建UDP套接字

news/2024/5/18 12:59:48 标签: udp, 网络协议, 网络

创作不易,请留个赞吧!!!

任务描述

本关任务:在 Ping 的服务程序中创建一个使用 UDP 协议的套接字。

相关知识

为了完成本关任务,你需要掌握:

  1. 数据包套接字类型;
  2. 为套接字绑定 IP 地址及端口。
数据包套接字

套接字有三种类型:流式套接字(SOCK_STREAM),数据包套接字(SOCK_DGRAM)及原始套接字(SOCK_RAW)。 数据包格式套接字(Datagram Sockets)也叫“无连接的套接字”,在代码中使用 SOCK_DGRAM 表示。可以将 SOCK_DGRAM 比喻成高速移动的摩托车快递,它有以下特征: 强调快速传输而非传输顺序; 传输的数据可能丢失也可能损毁; 限制每次传输的数据大小; 数据的发送和接收是同步的。 数据包套接字也使用 IP 协议作路由,但是它不使用 TCP 协议,而是使用 UDP 协议(User Datagram Protocol,用户数据报协议)。

实际应用中,QQ 视频聊天和语音聊天主要使用 SOCK_DGRAM 来传输数据,因为首先要保证通信的效率,尽量减小延迟,而数据的正确性是次要的,即使丢失很小的一部分数据,视频和音频也可以正常解析,最多出现噪点或杂音,不会对通信质量有实质的影响。当然,SOCK_DGRAM 没有想象中的糟糕,不会频繁的丢失数据,数据错误只是小概率事件。

创建数据包套接字并绑定主机端口

套接字 Socket 实质上提供了主机间进程通信的连接点。进程通信之前,双方首先必须各自创建一个连接点,否则是没有办法建立联系并相互通信的。 一个完整的 Socket 则用一个通信双方的相关描述: {协议,本地地址,本地端口,远程地址,远程端口} 实际应用中,在创建一个 Socket 时先用一个半相关描述(因为另一半尚不确定): {协议,本地地址,本地端口} 每一个 Socket 有一个本地的唯一端口号,由操作系统分配。

在 Python 中,创建套接字的函数为: socket(socket_family,socket_type,protocal=0) 其中:socket_family 一般为AF_INET;socket_type 可以是 SOCK_STREAMSOCK_DGRAM。protocol 一般不填,默认值为 0。 如创建 TCP 套接字: tcpSock = socket(AF_INET, SOCK_STREAM)

创建 UDP 套接字: udpSock = socket(AF_INET, SOCK_DGRAM)

为套接字绑定主机

绑定指为套接字绑定地址包含主机及其端口。 在AF_INET下,以元组(host,port)的形式表示地址。 host:用字符串表示的IP地址。表示本机,也可用回环地址127.0.0.1port:端口号,数字表示。1024 以下为系统约定,自定义的用 1024 以上。

编程要求

根据提示,在右侧编辑器代码的BeginEnd之间补充代码,创建一个数据包套接字,并绑定本机地址,端口号为 12000。

测试说明

平台会对你编写的代码进行测试,并输出创建的套接字属性。

预期输出:

  1. <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 12000)>

程序源代码

# UDPPingerServer.py 
from socket import * 
 
########## Begin ##########
 
# 创建UDP套接字
serverSocket = socket(AF_INET, SOCK_DGRAM)
# 绑定本机IP地址和端口号
serverSocket.bind(('', 12000))
 
########## End ##########
# 输出socket信息
print( serverSocket)


http://www.niftyadmin.cn/n/5281942.html

相关文章

Python实现广义最小二乘法线性回归模型(GLS算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 广义最小二乘法&#xff08;Generalized Least Squares&#xff09;是一种回归分析方法&#xff0c;适…

【Python特征工程系列】利用梯度提升(GradientBoosting)模型分析特征重要性(源码)

一、引言 应用背景介绍&#xff1a; 如果有一个包含数十个甚至数百个特征的数据集&#xff0c;每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的或不相关的&#xff0c;这会增加建模的复杂性并可能导致过拟合。特征重…

B2122 单词翻转

B2122 单词翻转 [B2122 单词翻转]&#xff08;https://www.luogu.com.cn/problem/B2122?contestId150480 B2122 单词翻转 题意 输入一串字符&#xff0c;将它倒着输出&#xff0c;但是&#xff0c;单词之间要换行&#xff0c;才能输出。 思路 先写for循环&#xff0c;在往上…

小样本学习idea(不断更新)

在此整理并记录自己的思考过程&#xff0c;其中不乏有一些尚未成熟或者尚未实现的idea&#xff0c;也有一些idea实现之后没有效果或者正在实现&#xff0c;当然也有部分idea已写成论文正在投稿&#xff0c;都是自己的一些碎碎念念的思考&#xff0c;欢迎交流。 研一上学期 9.…

多标签分类中常用指标和可视化例子

多标签分类中常用指标 1. 准确率&#xff08;Accuracy&#xff09; 准确率计算的是正确预测的标签比例。对于多标签分类&#xff0c;这通常是一个较为严格的指标&#xff0c;因为要求每个实例的所有标签都预测正确。 Accuracy 正确预测的标签数 总标签数 \text{Accuracy} \…

AE/PR插件-去朦胧除雾霾增强色彩对比清晰画面调色插件ClearPlus

ClearPlus是一款功能强大的插件&#xff0c;旨在增强包括模糊、水下和弱光视频在内的素材&#xff0c;它也是增强天空的理想选择。该插件能够轻松灵活地使颜色变得时尚。它提供阴影滑块、除雾滑块、直方图滑块、白平衡等其他功能&#xff0c;能够有效帮助用户恢复图像原本的图片…

新疆某职业技术学院,实现对上千台IT设备的集中监控和管理

随着信息化时代的快速发展&#xff0c;IT技术已经成为教育领域不可或缺的一部分。新疆某职业技术学院为了更好地支持教学和科研工作&#xff0c;决定引入监控易管理平台7.0&#xff0c;实现对上千台IT设备的监控管理。通过引入该平台&#xff0c;职业技术学院的IT运维效率和质量…

Java项目启动过程中Mybatis报错bug(多问题汇总,持续更新)

目录 前言1. Error: Method queryTotal execution error of sql2. Cause: java.sql.SQLSyntaxErrorException: Unknown column xxxxx in fiel其他前言 统计实战中关于Mybatis出错的原因 1. Error: Method queryTotal execution error of sql 执行Springboot的时候出现如下错…