日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python中getservbyport和getservbyname函數的用法大全_python

作者:棉猴 ? 更新時間: 2023-03-01 編程語言

在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

欄目分類
最近更新