2014-01-29 100 views
1

我試圖實現nntp服務器。但看起來我有多線路響應問題。當我發送響應客戶端關閉連接。 我使用Thunderbird和SeaMonkey作爲客戶端。NNTP服務器實現

我注意幫助理解我的反應有什麼問題。謝謝。

[S] server 
[C] client 


[S] 200NNTP Service Ready,posting permitted. 

[C] MODE READER 
[S] 200 Posting allowed 

[C] GROUP group1 
[S] 221 1 10100 10100 

[C] XOVER 10100-10100 
[S] 224 
[S] 10100 
[S] Subject 2104406756 
[S] User0 <[email protected]> 
[S] Tue Jan 28 11:32:44FET 2014 
[S] <[email protected]> 
[S] . 

[C] HEAD 10100 
[S] 221 10100 <[email protected]> 
[S] Path: news.foo.bar!not-for-mail 
[S] From: User0<[email protected]> 
[S] Newsgroups: group1 
[S] Subject: Subject 2104406756 
[S] Date: Tue Jan 28 11:32:44FET 2014 
[S] Message-ID: <[email protected]> 
[S] . 

upd1:

我在雷鳥安裝插件在客戶端(TBTracer)調試交通,看起來像客戶端無法理解我的多行響應。客戶只收到第一部分回覆。例如,XOVER的響應是多行的。

[NNTP] [13:54:29] 200 NNTP服務就緒,允許發佈。

[NNTP] [13時54分29秒] MODE READER

[NNTP] [13時54分30秒] 200發佈允許

[NNTP] [13時54分30秒]組group1

[NNTP] [13時54分31秒] 221 1 10100 10100

[NNTP] [13時54分31秒] XOVER 10100-10100

[NNTP] [13點55分15秒] 224

[NNTP] [13點55分15秒] QUIT

根據RFC 3977

3.1.1。多行數據塊

  1. 塊包括零個或多個「線」的序列,每個 是與一個CRLF對結束八位字節流。除了這些行結尾的 之外,流必須不包括八位位組NUL, LF或CR。

我試過發送不同類型的行但沒有任何成功。 例如:

String r = "224\r\n10100\r\n6 Oct 2000 04:38:40\r\n<[email protected]>\r\n.\r\n"; 

回答

2

答案很簡單。 RFC 2980

輸出的每一行會與文章編號被格式化,
隨後每個在概覽數據庫中的標頭或
製品本身(當數據不是在概覽可用
數據庫),由製表符分隔

如果不存在數據,則必須提供空字段(即, 輸出將具有兩個製表符彼此相鄰)。

例如:111\tSubject\tUser\tDate\t111\t\t