import java.io.*;
import java.net.*;
import java.util.*;
/**
* This program demonstrates how to implement a UDP server program.
*
*
* @author www.codejava.net
*/
public class WoWserver {
private DatagramSocket socket;
private List WoWmessages = new ArrayList();
private Random random;
public WoWserver(int port) throws SocketException {
socket = new DatagramSocket(port);
random = new Random();
}
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("Syntax: WoWserver ");
return;
}
String WoWfile = args[0];
int port = Integer.parseInt(args[1]);
try {
WoWserver server = new WoWserver(port);
server.loadWoWFromFile(WoWfile);
server.service();
} catch (SocketException ex) {
System.out.println("Socket error: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("I/O error: " + ex.getMessage());
}
}
private void service() throws IOException {
while (true) {
DatagramPacket WoWrequest = new DatagramPacket(new byte[1], 1);
socket.receive(WoWrequest);
String WoWmessage = getNewWoW();
byte[] buffer = WoWmessage.getBytes();
InetAddress clientAddress = WoWrequest.getAddress();
System.out.print(clientAddress);
int clientPort = WoWrequest.getPort();
DatagramPacket WoWresponse = new DatagramPacket(buffer, buffer.length, clientAddress, clientPort);
socket.send(WoWresponse);
}
}
private void loadWoWFromFile(String WoWfile) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(WoWfile));
String WoWcontentLine;
while ((WoWcontentLine = reader.readLine()) != null) {
WoWmessages.add(WoWcontentLine);
}
reader.close();
}
private String getNewWoW() {
int randomIndex = random.nextInt(WoWmessages.size());
String randomWoW = WoWmessages.get(randomIndex);
return randomWoW;
}
}