NNTP服务器实现

时间:2014-01-29 08:04:31

标签: java nntp usenet

我正在尝试实现nntp服务器。但看起来我的多线响应有问题。当我发送响应客户端关闭连接。 我正在使用Thunderbird和SeaMonkey作为客户。

我听从帮助,了解我的回答有什么问题。感谢。

[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 <user0@xxx.com>
[S] Tue Jan 28 11:32:44FET 2014
[S] <10100@xxx.com>
[S] .

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

upd1:

我在Thunderbird中安装了插件,用于调试客户端(TBTracer)的流量,看起来客户端无法理解我的多线路响应。客户只收到第一部分回复。例如,XOVER的响应是多行的。

  

[NNTP] [13:54:29] 200 NNTP服务就绪,允许发布。

     

[NNTP] [13:54:29]模式阅读器

     

[NNTP] [13:54:30] 200允许发布

     

[NNTP] [13:54:30] GROUP 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]退出

根据RFC 3977

  

3.1.1。多行数据块

     
      
  1. 该块由一系列零个或多个“行”组成      是一个以CRLF对结尾的八位字节流。除了      那些行结尾,流不得包含八位字节NUL,      LF或CR。
  2.   

我尝试发送不同类型的线但没有任何成功。 例如:

String r = "224\r\n10100\r\n6 Oct 2000 04:38:40\r\n<10100@xxx.com>\r\n.\r\n";

1 个答案:

答案 0 :(得分:2)

答案很简单。 RFC 2980

  

每行输出将使用文章编号格式化   然后是概览数据库中的每个标题或   文章本身(当概述中没有数据时)   数据库)该文章由制表符分隔。

     

如果不存在数据,则必须提供空字段(即   输出将有两个制表符彼此相邻)。

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