2014-01-29 98 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