網(wǎng)站首頁 編程語言 正文
在Python的網(wǎng)絡編程中,getservbyport()函數(shù)和getservbyname()函數(shù)是socket模塊中的兩個函數(shù),因此在使用這兩個函數(shù)時,需要導入socket模塊。
1 getservbyname()函數(shù)
getservbyname()函數(shù)的作用是通過指定服務的名稱獲取該服務對應的端口號。
相關鏈接1 服務與端口號,一臺擁有IP地址的主機可以提供許多服務,這些服務就是通過端口號來進行區(qū)分的,即一個端口號對應一個服務。
1.1 語法
getservbyname()函數(shù)的語法如下所示:
<code class="language-plaintext hljs">socket.getservbyname(servicename[, protocolname])</code>
其中,參數(shù)servicename即為要查找的服務名;參數(shù)protocolname是一個可選的參數(shù),表示該服務所基于的協(xié)議名,該參數(shù)可以設置為‘tcp’或者‘udp’,如果不設置該參數(shù),則基于任何協(xié)議的服務均可查詢。
1.2 相關代碼
1.2.1 獲取指定服務對應的端口
使用圖1所示代碼可以獲取指定服務對應的端口。
圖1 獲取指定服務對應的端口
以上代碼的作用是獲取ftp服務對應的端口,即端口號21。
1.2.2 獲取指定協(xié)議的指定服務對應的端口號
使用圖2所示代碼可以獲取指定協(xié)議的指定服務對應的端口。
圖2 獲取指定協(xié)議的指定服務對應的端口
以上代碼的作用是獲取基于tcp協(xié)議的ftp服務對應的端口,實際上和圖1中代碼的作用相同。如果將協(xié)議設置為upd,如圖3所示,此時代碼會報錯。
圖3 獲取基于udp的ftp服務對應的端口
以上代碼的作用是獲取基于udp協(xié)議的ftp服務對應的端口,從報錯信息可以看出,沒有找到基于udp協(xié)議的ftp服務,實際上我們使用的ftp服務都是基于tcp協(xié)議的。
2 getservbyport()函數(shù)
getservbyport()函數(shù)的作用是通過指定端口號獲取該端口號對應的服務名。
2.1 語法
getservbyport()函數(shù)的語法如下所示:
<code class="language-plaintext hljs">socket.getservbyport(port[, protocolname])</code>
其中,參數(shù)port是指定的端口號;參數(shù)rotocolname是一個可選的參數(shù),表示該服務所基于的協(xié)議名,該參數(shù)可以設置為‘tcp’或者‘udp’,如果不設置該參數(shù),則基于任何協(xié)議的服務均可查詢。
2.2 相關代碼
2.2.1 獲取指定端口對應的服務名
使用圖4所示代碼可以獲取指定端口對應的服務名。
圖4 獲取指定端口對應的服務名
以上代碼的作用是獲取端口21對應的服務名,即ftp服務。
2.2.2 獲取指定協(xié)議的指定端口號對應的服務名
使用如圖5所示的代碼可以獲取指定協(xié)議的指定端口號對應的服務名。
圖5 獲取指定協(xié)議的指定端口號對應的服務名
以上代碼的作用是獲取基于tcp協(xié)議的21端口號對應的服務名,實際上和圖1中代碼的作用相同。如果將協(xié)議設置為upd,如圖6所示,此時會得到另外的一個服務名fsp。也就是說ftp服務和fsp服務都是使用21端口,但是ftp服務是基于tcp協(xié)議的,fsp服務是基于udp的。
圖6 獲取指定協(xié)議的指定端口號對應的服務名
相關鏈接2, fsp是file server protocol即文件服務協(xié)議的簡寫,是一個基于UDP輕量級的文件傳輸協(xié)議。
2.2.3 獲取指定范圍內端口號對應的服務名
可以通過for循環(huán)獲取指定范圍內端口號對應的服務名,如圖7所示。
圖7 獲取指定范圍內端口號對應的服務名
以上代碼的作用是獲取1-99的端口號對應的服務名,因為有些端口沒有對應的服務名,此時getservbyport()函數(shù)會報錯,因此使用異常處理的方式,當該端口沒有對應服務名時,輸出相應信息,如圖8所示。
圖8 1-99端口對應的服務名
原文鏈接:https://blog.csdn.net/hou09tian/article/details/128651529
相關推薦
- 2022-01-08 解決npm install報錯問題--npm install xxx npm ERR! code E
- 2022-06-06 CSS3動畫:wifi 焦點擴散漸變
- 2023-01-07 Python使用TextRank算法提取關鍵詞_python
- 2024-01-30 關閉idea時出現(xiàn)waiting for process detach解決辦法
- 2022-09-17 C語言深入探索數(shù)據(jù)類型的存儲_C 語言
- 2022-07-10 linux基礎命令運用
- 2022-08-11 Python操作數(shù)據(jù)庫之數(shù)據(jù)庫編程接口_python
- 2022-09-03 Python?Pandas中DataFrame.drop_duplicates()刪除重復值詳解_p
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支