Python中getservbyport和getservbyname函数的用法大全
作者:棉猴 发布时间:2023-04-14 09:02:38
在Python的网络编程中,getservbyport()函数和getservbyname()函数是socket模块中的两个函数,因此在使用这两个函数时,需要导入socket模块。
1 getservbyname()函数
getservbyname()函数的作用是通过指定服务的名称获取该服务对应的端口号。
相关链接1 服务与端口号,一台拥有IP地址的主机可以提供许多服务,这些服务就是通过端口号来进行区分的,即一个端口号对应一个服务。
1.1 语法
getservbyname()函数的语法如下所示:
<code class="language-plaintext hljs">socket.getservbyname(servicename[, protocolname])</code>
其中,参数servicename即为要查找的服务名;参数protocolname是一个可选的参数,表示该服务所基于的协议名,该参数可以设置为‘tcp’或者‘udp’,如果不设置该参数,则基于任何协议的服务均可查询。
1.2 相关代码
1.2.1 获取指定服务对应的端口
使用图1所示代码可以获取指定服务对应的端口。
图1 获取指定服务对应的端口
以上代码的作用是获取ftp服务对应的端口,即端口号21。
1.2.2 获取指定协议的指定服务对应的端口号
使用图2所示代码可以获取指定协议的指定服务对应的端口。
图2 获取指定协议的指定服务对应的端口
以上代码的作用是获取基于tcp协议的ftp服务对应的端口,实际上和图1中代码的作用相同。如果将协议设置为upd,如图3所示,此时代码会报错。
图3 获取基于udp的ftp服务对应的端口
以上代码的作用是获取基于udp协议的ftp服务对应的端口,从报错信息可以看出,没有找到基于udp协议的ftp服务,实际上我们使用的ftp服务都是基于tcp协议的。
2 getservbyport()函数
getservbyport()函数的作用是通过指定端口号获取该端口号对应的服务名。
2.1 语法
getservbyport()函数的语法如下所示:
<code class="language-plaintext hljs">socket.getservbyport(port[, protocolname])</code>
其中,参数port是指定的端口号;参数rotocolname是一个可选的参数,表示该服务所基于的协议名,该参数可以设置为‘tcp’或者‘udp’,如果不设置该参数,则基于任何协议的服务均可查询。
2.2 相关代码
2.2.1 获取指定端口对应的服务名
使用图4所示代码可以获取指定端口对应的服务名。
图4 获取指定端口对应的服务名
以上代码的作用是获取端口21对应的服务名,即ftp服务。
2.2.2 获取指定协议的指定端口号对应的服务名
使用如图5所示的代码可以获取指定协议的指定端口号对应的服务名。
图5 获取指定协议的指定端口号对应的服务名
以上代码的作用是获取基于tcp协议的21端口号对应的服务名,实际上和图1中代码的作用相同。如果将协议设置为upd,如图6所示,此时会得到另外的一个服务名fsp。也就是说ftp服务和fsp服务都是使用21端口,但是ftp服务是基于tcp协议的,fsp服务是基于udp的。
图6 获取指定协议的指定端口号对应的服务名
相关链接2, fsp是file server protocol即文件服务协议的简写,是一个基于UDP轻量级的文件传输协议。
2.2.3 获取指定范围内端口号对应的服务名
可以通过for循环获取指定范围内端口号对应的服务名,如图7所示。
图7 获取指定范围内端口号对应的服务名
以上代码的作用是获取1-99的端口号对应的服务名,因为有些端口没有对应的服务名,此时getservbyport()函数会报错,因此使用异常处理的方式,当该端口没有对应服务名时,输出相应信息,如图8所示。
图8 1-99端口对应的服务名
来源:https://blog.csdn.net/hou09tian/article/details/128651529
猜你喜欢
- 前言风玫瑰是由气象学家用于给出如何风速和风向在特定位置通常分布的简明视图的图形工具。它也可以用来描述空气质量污染源。风玫瑰工具使用Matpl
- 很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最
- 环境配置gradio 安装 pip install gradiocv2 安装 pip install python-opencv实验原理cv
- 1.建立Recordset对象Dim objMyRstSet objMyRst=Server.CreateObject(&ldquo
- 这里我推荐大家使用pycharm百度输入关键词:pycharm,点击如图所示网站进入pycharm官网选择电脑系统版本,这里我们选择Wind
- 一个简单的tokenizer分词(tokenization)任务是Python字符串处理中最为常见任务了。我们这里讲解用正则表达式构建简单的
- 本文主要介绍如何通过python生成ppt文件,以及借助ppt模板来生成ppt环境python 3python-pptx安装pip3 ins
- pycharm里边安装不上d2l包。按以下步骤操作即可成功解决。1、首先查看现在pycharm所在的环境File—>
- 字符串格式化里的符号很多,本文详细的介绍一下,以便随时查找。%s :字符串的格式化,也是最常用的%d :格式化整数,也比较常用%c :格式化
- 现在写一篇博客总是喜欢先谈需求或者本内容的应用场景,是的,如果写出来的东西没有任何应用价值,确实也没有实际意义。今天的最早的需求是来自于如何
- 1、#coding:utf-8chose = [ ('foo',1,2), ('bar
- django是 * 页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染
- 一、准备工作开始之前,先参考上一篇: struts2.3.24 + spring4.1.6 + hibernate4.3.11 +
- 可能有很多朋友都会碰到一个问题不知道127.0.0.1与localhost有什么区别,但是有的时间会发现使用localhost连接不了,但是
- Js代码:/*** 验证码*/function yzm(){var codeChars = new Array(0, 1, 2, 3, 4,
- 下面先来看看例子:table表字段1 字段2 i
- 前言如今的玩家们在无聊的时候会玩些什么游戏呢?王者还是吃鸡是最多的选择。但在80、90年代的时候多是一些很简单的游戏:《超级玛丽》、《蜘蛛纸
- 本文实例借鉴mvc模式,核心数据为model,维护1个矩阵,0表无雷,1表雷,-1表已经检测过。本例使用python的tkinter做gui
- 如下所示:import cv2import mathimport numpy as npdef move(img): height, wid
- 有了db模块,操作数据库直接写SQL就很方便。但是,我们还缺少ORM。如果有了ORM,就可以用类似这样的语句获取User对象:user =