UDP Ping程序实现--第4关:客户端创建UDP套接字

发布时间:2023年12月25日

?创作不易,还希望各位大佬支持一下?

👍?点赞,你的认可是我创作的动力!?

???收藏,你的青睐是我努力的方向!

???评论,你的意见是我进步的财富!?

任务描述

本关任务:在 Ping 客户端程序中创建数据包套接字并设置超时时间。

相关知识

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

  1. 创建数据包套接字;
  2. 设置超时时间。
创建数据包套接字

套接字 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)

设置套接字超时时间

在进行客户端向服务器发送 Ping 消息的过程中,有时候可能会因为网络原因造成一直连不上服务器(如服务器程序没有开启),这时如不手动停止,Socket 可能会一直尝试重连,造成资源的浪费。这就需要设置timeout来限制重连时间,当 Socket 尝试重连到指定的时间时,就会停止一切操作,并提示达到timeout设定阈值。 设置超时时间一般在创建套接字后,在网络通信之前进行。示例如下:

mysocket.settimeout(10)

?代码作用为设定套接字的超时时间为 10 秒。

编程要求

根据提示,在右侧编辑器代码的BeginEnd之间补充代码,创建使用数据包的套接字,并为其设定超时时间为 1 秒。

测试说明

平台会对你编写的代码进行测试,并输出该套接字的属性,如果和预期输出一致,就会通过本关。

预期输出:

  1. <socket.socket fd=3, family=AddressFamily.AF_INET, type=2050, proto=0, laddr=(‘0.0.0.0', 0)>
  2. 1.0

源程序示例?

from socket import *
 
########## Begin ##########
# 创建UDP套接字,使用IPv4协议
clientSocket = socket(AF_INET, SOCK_DGRAM) 
# 设置套接字超时值1秒
clientSocket.settimeout(1)
########## End ##########
 
print(clientSocket)
print(clientSocket.gettimeout())

?创作不易,还希望各位大佬支持一下?

👍?点赞,你的认可是我创作的动力!?

???收藏,你的青睐是我努力的方向!

???评论,你的意见是我进步的财富!?

文章来源:https://blog.csdn.net/qq_66047907/article/details/135198566
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。