You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.0 KiB
92 lines
2.0 KiB
|
19 years ago
|
package DokeosAppShare;
|
||
|
|
|
||
|
|
import java.net.*;
|
||
|
|
import java.io.*;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Summary description for ConnectionToRelay.
|
||
|
|
*/
|
||
|
|
public class CommandConnection extends Thread
|
||
|
|
{
|
||
|
|
|
||
|
|
/* COMMANDS */
|
||
|
|
public static final int SERVER_CONNECTION = 10;
|
||
|
|
public static final int CLIENT_CONNECTION = 20;
|
||
|
|
public static final int RELAY_CONNECTION = 30;
|
||
|
|
|
||
|
|
Socket relay;
|
||
|
|
String serverID;
|
||
|
|
|
||
|
|
public CommandConnection(String inServerID) throws IOException
|
||
|
|
{
|
||
|
|
serverID = inServerID;
|
||
|
|
relay = new Socket(Config.getRelayHostName(), Config.getRelayPort());
|
||
|
|
|
||
|
|
this.setDaemon(true);
|
||
|
|
}
|
||
|
|
|
||
|
|
public void run()
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
InputStream in = relay.getInputStream();
|
||
|
|
OutputStream out = relay.getOutputStream();
|
||
|
|
writeCommand(out, SERVER_CONNECTION, serverID);
|
||
|
|
for (; ; )
|
||
|
|
{
|
||
|
|
//Wait command from relay
|
||
|
|
System.out.println("Waiting command from relay...");
|
||
|
|
int command = in.read();
|
||
|
|
System.out.println("Command receive : " + command);
|
||
|
|
if (command == RELAY_CONNECTION)
|
||
|
|
{
|
||
|
|
String connServerId = readCommandParam(in);
|
||
|
|
System.out.println("relay try connection to : " + connServerId);
|
||
|
|
if (connServerId.equals(serverID))
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
new ConnectionToRelay(serverID);
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
System.out.println("Exception on ConnectionToRelay instanciation");
|
||
|
|
ex.printStackTrace();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
System.out.println("bad server name : " + connServerId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
catch (IOException ex)
|
||
|
|
{
|
||
|
|
System.out.println("Exception in CommandConnection listener thread");
|
||
|
|
ex.printStackTrace();
|
||
|
|
}
|
||
|
|
finally
|
||
|
|
{
|
||
|
|
try { relay.close(); }
|
||
|
|
catch (Exception ex) { }
|
||
|
|
//TODO Exit application
|
||
|
|
}
|
||
|
|
}
|
||
|
|
public static String readCommandParam(InputStream in) throws IOException
|
||
|
|
{
|
||
|
|
int size = in.read();
|
||
|
|
byte[] data = new byte[size];
|
||
|
|
in.read(data);
|
||
|
|
return new String(data);
|
||
|
|
}
|
||
|
|
public static void writeCommand(OutputStream out, int command, String param) throws IOException
|
||
|
|
{
|
||
|
|
out.write(command);
|
||
|
|
byte[] data = param.getBytes();
|
||
|
|
out.write(data.length);
|
||
|
|
out.write(data);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|