網絡新聞傳輸協議NNTP


一、Usenet與新聞組

Usenet新聞系統是一個全球存檔的“電子公告板”,各種主題的新聞組一應俱全。新聞組可以是面向全球泛泛而談,也可以是只面向某一個地區區域。

整個系統是由一個大量計算機組成的一個龐大的全球網絡,計算機之間共享Usenet上的帖子。

如果某一個用戶發了一個帖子到本地的Usenet計算機上,這個帖子會傳播到其它相連的計算機上,並再由這些計算機傳到與它們相連的計算機上,直到這個帖子傳播到了全世界。

每個系統都有一個它已經“訂閱”的新聞組的列表,它只接收它感興趣的新聞組里的帖子——而不是服務器上所有新聞組的帖子。

Usenet新聞組服務內容取決於服務提供者,很多都是可供公眾訪問的,也有一些只允許特定的用戶使用。

如果Usenet系統管理員設置了的話,有可能要求輸入用戶名和密碼。管理員也可以設置是否只允許上傳或只允許下載。

 

二、網絡新聞傳輸協議(NNTP)

供用戶在新聞組中下載或發表帖子的方法叫網絡新聞傳輸協議(NNTP)。

作為客戶端/服務器架構的另一個例子,NNTP與FTP的操作方式很像,而且簡單的多。

FTP需要不同的端口來做登錄、數據傳輸和控制,而NNTP只使用一個標准端口119來做通訊。你給服務器一個請求,它做出相應的反饋。

 

三、python和NNTP

與FTP協議一樣,NNTP也有個專屬的類nntplib來施展它的才能。

NNTP對象的方法
方法 描述
 group(name)  選擇一個組的名字,返回一個元組(rsp,ct,fst,lst,group):服務器的返回信息文章的數量、第一個和最后一個文章的號碼以及組名,所有數據都是字符串(返回的group與我們傳進去的那么應該是相同的)
xhdr(hdr,artrg,     [ofile])                    返回文章范圍artrg(“頭-尾”的格式)內文章hdr頭的列表,或輸出到文件ofile中 
body(id[,ofile])   給定文章的id,id可以是消息的ID(放在尖括號里),或一個文章號(是一個字符串),返回一個元祖(rsp,anum,mid,data):服務器的返回信息、文章號(是一個字符串)、消息的ID(放在尖括號里)和文章所有行的列表或把數據輸出到文件ofile中
 head(id)  與body()相似,只是返回的元祖中那個行的列表中只包含了文章的標題
article(id)   也跟body()一樣,只是返回的元祖中哪個行的列表中包含了文章的標題和內容
stat(id)   讓文章的“指針”指向id(同上,是一個消息的ID或是文章的號碼)。返回一個跟body一樣的元祖(rsp,anum,mid),但不包含文章的數據
next()  用法和stat()類似,把文章指針移到下一篇文章,返回與stat()相似的元祖 
last()   用法和stat()類似,把文章指針轉移到最后一篇文章,返回與stat()相似的元祖
 post(ufile) 上傳ufile文件對象里的內容(使用ufile.readlines()),並在當前新聞組發表 
quit() 關閉連接,然后退出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM