source: trunk/src/org/expeditee/network/FrameServer.java@ 311

Last change on this file since 311 was 311, checked in by ra33, 16 years ago

Fixed a few bugs that were makin unit tests fail...
Also added Greenstone search of HCI Bib tex

File size: 1.7 KB
Line 
1package org.expeditee.network;
2
3import java.io.BufferedReader;
4import java.io.IOException;
5import java.net.DatagramPacket;
6import java.net.InetAddress;
7
8import org.expeditee.gui.FrameIO;
9import org.expeditee.gui.MessageBay;
10
11public class FrameServer extends DefaultServer {
12 public final static int OFFSET = 0;
13
14 public FrameServer(int port) throws IOException {
15 super("FrameServer", port);
16 }
17
18 protected String getFrame(String frameName) {
19 StringBuffer sb = new StringBuffer();
20 BufferedReader br = FrameIO.LoadPublicFrame(frameName);
21 if (br == null)
22 return null;
23
24 String s = null;
25 try {
26 while ((s = br.readLine()) != null) {
27 // Check if there is space for the next line in the packet
28 if (sb.length() + s.length() > MAX_PACKET_LENGTH) {
29 MessageBay.errorMessage(frameName
30 + " is too large to be sent in a single packet");
31 break;
32 }
33 sb.append(s).append('\n');
34 }
35 } catch (IOException e) {
36 e.printStackTrace();
37 }
38
39 return sb.toString();
40 }
41
42 @Override
43 protected void listenForMessages() throws IOException {
44 byte[] buf = new byte[FRAMENAME_PACKET_LENGTH];
45
46 // receive request
47 DatagramPacket packet = new DatagramPacket(buf, buf.length);
48 socket.receive(packet);
49
50 String frameName = new String(packet.getData(), 0, packet.getLength());
51 MessageBay.displayMessage("Recieved request for " + frameName);
52
53 // figure out response
54 String dString = getFrame(frameName);
55 if (dString == null)
56 dString = "";
57
58 buf = dString.getBytes();
59
60 // send the response to the client at "address" and "port"
61 InetAddress address = packet.getAddress();
62 int port = packet.getPort();
63 packet = new DatagramPacket(buf, buf.length, address, port);
64 socket.send(packet);
65 }
66}
Note: See TracBrowser for help on using the repository browser.