ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/UDPReader.java
Revision: 1.3
Committed: Fri Nov 17 15:25:48 2000 UTC (24 years ago) by pjm2
Branch: MAIN
Changes since 1.2: +10 -1 lines
Log Message:
Wrapped the DatagramSocket part in a try { } so that a warning is given
when some other process is already listening on the same port.

File Contents

# Content
1 import java.io.*;
2 import java.net.*;
3 import java.util.*;
4
5 // This class contains the main method to be run by
6 // the filter children. It harvests UDP traffic
7 //
8 //
9 public class UDPReader {
10
11 public static void main(String[] args) throws IOException {
12
13 // default UDP listening port.
14 int port = 4589;
15 final int packetSizeLimit = 8192;
16
17 // Allow the user to choose their own port number.
18 if (args.length == 1){
19 try {
20 port = new Integer(args[0]).intValue();
21 }
22 catch (Exception e){
23 // If something went wrong, use the default again.
24 port = 4589;
25 }
26 }
27
28 DatagramSocket socket = null;
29 try {
30 socket = new DatagramSocket(port);
31 }
32 catch (BindException e){
33 System.out.println("Some other process is already listening on port "+port+".");
34 System.out.println("Please specify another port number on the command line.");
35 System.exit(0);
36 }
37
38 System.out.println("UDPReader ready and listening for UDP packets on port "+port);
39
40 boolean running = true;
41 while (running){
42 try {
43 byte[] buf = new byte[packetSizeLimit];
44 // receive request
45 DatagramPacket packet = new DatagramPacket(buf, buf.length);
46 socket.receive(packet);
47 UDPReaderThread thread = new UDPReaderThread(packet);
48 thread.run();
49 }
50 catch (IOException e) {
51 System.out.println("An exception occured in the UDPReader!");
52 e.printStackTrace();
53 }
54 }
55 socket.close();
56 }
57 }