1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.net.examples.nntp;
19
20 import java.io.BufferedReader;
21 import java.io.IOException;
22 import java.net.SocketException;
23
24 import org.apache.commons.net.examples.PrintCommandListeners;
25 import org.apache.commons.net.nntp.NNTPClient;
26 import org.apache.commons.net.nntp.NewsgroupInfo;
27
28
29
30
31 public class ArticleReader {
32
33 public static void main(final String[] args) throws SocketException, IOException {
34
35 if (args.length != 2 && args.length != 3 && args.length != 5) {
36 System.out.println("Usage: MessageThreading <hostname> <groupname> [<article specifier> [<user> <password>]]");
37 return;
38 }
39
40 final String hostname = args[0];
41 final String newsgroup = args[1];
42
43 final String articleSpec = args.length >= 3 ? args[2] : null;
44
45 final NNTPClient client = new NNTPClient();
46 client.addProtocolCommandListener(PrintCommandListeners.sysOutPrintCommandListener());
47 client.connect(hostname);
48
49 if (args.length == 5) {
50 final String user = args[3];
51 final String password = args[4];
52 if (!client.authenticate(user, password)) {
53 System.out.println("Authentication failed for user " + user + "!");
54 System.exit(1);
55 }
56 }
57
58 final NewsgroupInfo group = new NewsgroupInfo();
59 client.selectNewsgroup(newsgroup, group);
60
61 final BufferedReader brHdr;
62 String line;
63 if (articleSpec != null) {
64 brHdr = (BufferedReader) client.retrieveArticleHeader(articleSpec);
65 } else {
66 final long articleNum = group.getLastArticleLong();
67 brHdr = client.retrieveArticleHeader(articleNum);
68 }
69 if (brHdr != null) {
70 while ((line = brHdr.readLine()) != null) {
71 System.out.println(line);
72 }
73 brHdr.close();
74 }
75 final BufferedReader brBody;
76 if (articleSpec != null) {
77 brBody = (BufferedReader) client.retrieveArticleBody(articleSpec);
78 } else {
79 final long articleNum = group.getLastArticleLong();
80 brBody = client.retrieveArticleBody(articleNum);
81 }
82 if (brBody != null) {
83 while ((line = brBody.readLine()) != null) {
84 System.out.println(line);
85 }
86 brBody.close();
87 }
88 }
89
90 }