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

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

Can navigate with PgUp PgDn Home and End with remote framesets

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