Apache公共網絡程序庫可行性替換研究

      網友投稿 1144 2022-05-30

      【引言】

      最近收到一個調研需求,就是關于Apache Commons Net的替換研究。由于其最新的發布版本時間為2017年2月14日,已經有超過三年沒有更新了。所以有必要對其進行可行性的替換研究。本文我們就來探索一下這個問題。

      【Apache Commons Net】

      Apache Commons Net??庫包含了許多基礎的互聯網協議客戶端。

      該庫的目的是提供基本的互聯網協議訪問。

      【設計理念】

      其設計理念是,可訪問協議的全局功能,?如TFTP發送文件和接收文件),也可訪問協議的基本功能。

      通過這個程序庫,程序員可以構造自定義實現,如TFTP數據包類。

      【官方網站】

      https://commons.apache.org/proper/commons-net/

      【License】

      Apache License 2.0

      【最新發布】

      10.15.1.3?于?2019年3月11日

      【功能列表】

      支持的協議包括:

      l??FTP/FTPS

      l??HTTP上的FTP(實驗性的)

      l??NNNTP

      l??SMTP(S)

      l??POP3(S)

      l??IMAP(S)

      l??Telnet

      l??TFTP

      l??Finger

      l??Whois

      l??rexec/rcmd/rlogin

      l??Time(rdate)和Daytime

      l??Echo

      l??Discard

      l??NTP/SNTP

      【背景資料】

      Apache Jakarta Commons Net最初是作為一個名為NetComponents的商業化Java庫開始的。

      是由ROO公司基于Java的早期版本開發的。

      在1998年1.3.8發布后,源代碼被捐贈給了Apache軟件基金會,并在Apache許可證下提供。

      從那時起,許多程序員為Jakarta Commons Net的持續發展做出了貢獻。

      目前的版本編號方案與舊版本沒有任何關系。

      換句話說,?Jakarta Commons Net 1.0繼承并取代了NetComponents 1.3.8。

      Apache Jakarta Commons現在是一個獨立的項目,被稱為Apache Commons。

      【示例】

      Commons NET包含了幾個工作示例應用程序。?源文件和編譯后的jar都包含其中。

      要使用其中一個示例應用程序,要確保其和主jar都在同一個目錄下。

      然后按照下面的命令行例子運行:

      java -jar [path/]commons-net-examples-3.5.jar FTPClientExample [parameters]

      FTP (包:?examples/ftp)

      l??FTPClientExample演示了通過FTP(S)和FTP over HTTP的文件下載和上傳、LIST、MLST等。

      l??ServerToServerFTP?演示了服務器到服務器的文件傳輸,?可將文件從host1傳輸到host2。

      l??TFTPExample?是一個簡單的Java tftp客戶端的例子。

      MAIL (package: examples/mail)

      l??IMAPMail?演示如何使用IMAP[S]Client類。

      l??POP3Mail?演示如何使用POP3[S]Client類。

      l??SMTPMail?演示如何使用SMTP[S]Client類。

      NNTP (包:?examples/nntp)

      l??ArticleReader?演示一種讀取文章頭和正文的方法。

      l??ExtendedNTPOps?演示示一些擴展命令(AUTH, XOVER, LIST ACTIVE)。

      l??ListNewsgroups?演示使用NNNTP包近似于Unix的新聞組命令。它可以連接到指定的新聞服務器,并獲取服務器上的新聞組列表。在存儲了大量新聞組的服務器上,這個命令可能需要很長時間(比如列出多達30,000個組)。

      l??MessageThreading?演示使用文章迭代和線程。

      l??PostMessage?演示使用NNNTP包發布文章到指定的新聞組的示例程序。它會在發布后提示你發布文章的頭信息和文件名。

      NTP (包:?examples/ntp)

      l??NTPClient?演示如何使用NTPUDPClient類的,?會發送一個數據報請求包到指定服務器上的網絡時間協議(NTP)服務端口,檢索時間,并將其與NTP報文頭的字段(如:層級、參考ID、輪詢間隔、根延遲、模式.........)一起打印到標準輸出。

      Apache公共網絡程序庫可行性替換研究

      l??TimeClient?演示如何使用TimeTCPClient和TimeUDPClient類,?會連接到指定服務器的默認時間服務端口,檢索時間,并將其打印到標準輸出。

      Telnet(包:examples/telnet)

      l??TelnetClientExample?是一個簡單的TelnetClient使用實例。

      l??WeatherTelnet ?是一個使用TelnetClient類的簡單例子。它會連接到密歇根大學的氣象服務器um-weather.sprl.umich.edu端口3000,并允許用戶通過標準輸入與服務器進行交互。

      Unix實用工具(包:?examples/unix)。

      l??chargeren chargeren使用例子。

      l??daytime使用daytime的簡單例子。

      l??echo簡單的echo的使用例子。

      l??finger finger的簡單例子。

      l??fwhois fwhois的簡單例子。

      l??rdate?簡單的rdate例子。

      l??rexec rexec的簡單例子。

      l??rlogin?使用rlogin的簡單例子。

      l??rshell rshell的簡單例子。

      【FTP,NNTP,NTP,Telnet,Unix實用工具自研替換】

      目前支持Java語言的上述功能程序庫比較新的且流行的是上文提到的Apache Commons Net?中的程序包,既然版本有些老舊,團隊可以在其基礎上自研替換。

      【Mail客戶端功能替換:Jakata Mail】

      Jakarta Mail是一個Java API程序庫,用于通過SMTP、POP3和IMAP發送和接收電子郵件。

      【License】

      EPL 2.0

      GPL 2.0

      【最新發布】

      1.6.5?于?2020年3月10日

      【功能列表】

      API包

      描述

      javax.mail

      雅加達郵件API提供的類提供了一個郵件系統的模型。

      javax.mail.event

      聆聽者和事件包。

      javax.mail.internet

      互聯網郵件系統特有的類。

      javax.mail.search

      消息搜索詞。

      javax.mail.util

      實用工具類。

      具體實施包

      描述

      com.sun.mail.dsn

      創建和解析交付狀態通知。

      com.sun.mail.gimap

      一個EXPERIMENTAL IMAP協議提供,支持Gmail特定的IMAP協議擴展。

      com.sun.mail.imap

      IMAP消息存儲的訪問。

      com.sun.mail.pop3

      POP3消息存儲的訪問

      com.sun.mail.smtp

      SMTP服務器的訪問

      com.sun.mail.util

      實用工具類。

      com.sun.mail.util.logging

      包含Java?平臺的核心日志Jakarta Mail擴展。

      Jakarta Mail API提供了一個郵件系統的模型類,?javax.mail包定義了所有郵件系統通用的類。javax.mail.internet包定義了基于互聯網標準的郵件系統的類,如MIME、SMTP、POP3和IMAP。Jakarta Mail API包括javax.mail包和子包。

      例子

      下面是一個例子:

      發送純文本郵件:

      Properties?props?=?new?Properties();

      props.put("mail.smtp.host",?"my-mail-server");

      Session?session?=?Session.getInstance(props,?null);

      try?{

      MimeMessage?msg?=?new?MimeMessage(session);

      msg.setFrom("me@example.com");

      msg.setRecipients(Message.RecipientType.TO,

      "you@example.com");

      msg.setSubject("Jakarta?Mail?hello?world?example");

      msg.setSentDate(new?Date());

      msg.setText("Hello,?world!\n");

      Transport.send(msg,?"me@example.com",?"my-password");

      }?catch?(MessagingException?mex)?{

      System.out.println("send?failed,?exception:?"?+?mex);

      }

      更多屬性配置和文檔可參看官方網站。

      【官方網站】

      https://eclipse-ee4j.github.io/mail/

      【小結】

      本文對Apache Commons Net這個程序庫的技術特點和內容做了分析,到目前為止,發現除了Mail功能可能有替代者:Jakata Mail意外,其他的功能程序建議參考現有程序庫進行自研。

      希望本文對業務開發有指導作用,?并對大家有所裨益。

      歡迎討論。

      【更多文章】

      Jet Ding文章歸類索引表

      FTP Apache 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:J2EE進階(十三)Spring MVC常用的那些注解
      下一篇:ECharts用法及常用配置項詳解(Vue環境)
      相關文章
      亚洲综合av永久无码精品一区二区 | 亚洲综合无码一区二区痴汉 | 久久久久久a亚洲欧洲AV| 亚洲av无码不卡私人影院| 亚洲AV无码片一区二区三区 | 亚洲天然素人无码专区| 亚洲日韩国产二区无码| 亚洲αⅴ无码乱码在线观看性色| 亚洲偷自拍另类图片二区| 亚洲精品动漫免费二区| 亚洲日本乱码卡2卡3卡新区| 亚洲AV无码一区二区三区人| 久久精品国产亚洲αv忘忧草 | 国产V亚洲V天堂无码久久久| 亚洲AV无码精品无码麻豆| 亚洲成人精品久久| 久久久无码精品亚洲日韩蜜臀浪潮 | 含羞草国产亚洲精品岁国产精品| 亚洲av日韩av永久在线观看| 精品亚洲av无码一区二区柚蜜| 亚洲 综合 国产 欧洲 丝袜| 亚洲高清成人一区二区三区| 亚洲人成无码www久久久| 国产亚洲视频在线播放| 亚洲春色在线视频| 亚洲高清视频在线播放| 亚洲免费在线观看视频| 亚洲愉拍一区二区三区| 国产成人亚洲精品无码AV大片| 亚洲精品国产日韩无码AV永久免费网| 亚洲精品国产日韩无码AV永久免费网| 亚洲真人无码永久在线 | 亚洲国产精品成人午夜在线观看 | 日韩色日韩视频亚洲网站| 亚洲av无码乱码在线观看野外| 亚洲国产精品碰碰| 亚洲熟妇丰满多毛XXXX| 亚洲国产美国国产综合一区二区| 亚洲高清无在码在线电影不卡| 亚洲AV色吊丝无码| 激情无码亚洲一区二区三区|