/*
* $Id: SelfTest.java,v 1.4 2006-10-11 09:50:12 tigran Exp $
*/
package javatunnel;
import org.dcache.dss.KerberosDssContextFactory;
import javax.net.ServerSocketFactory;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
class SelfTest {
public static void main(String[] args)
{
int port = 1717;
String host = "localhost";
Reciever r = new Reciever(port);
r.start();
Sender s = new Sender(host, port);
s.start();
}
private static class Sender extends Thread {
private final String _host;
private final int _port;
Sender(String host, int port) {
super("Sender");
_port = port;
_host = host;
}
@Override
public void run() {
OutputStream out;
InputStream in;
Socket s;
PrintStream os;
DataInputStream is;
try {
s = new DssSocket( _host, _port, new KerberosDssContextFactory("tigran@DESY.DE", "nfs/anahit.desy.de@DESY.DE"));
Thread.sleep(20000);
out = s.getOutputStream();
in = s.getInputStream();
os = new PrintStream(out);
is = new DataInputStream(in);
} catch(Exception e) {
System.out.println(e);
return;
}
while (!Thread.interrupted()) {
try {
System.out.println(" Sender to reciver : " + "Hello tunnel" );
os.println("Hello tunnel");
System.out.println(" Sender Got : " + is.readLine() );
Thread.sleep(2000);
} catch(Exception e) {
System.out.println(e);
e.printStackTrace();
break;
}
}
}
}
private static class Reciever extends Thread {
private final int _port;
Reciever(int port) {
super("Reciever");
_port = port;
}
@Override
public void run() {
ServerSocket server;
Socket s;
OutputStream out;
InputStream in;
PrintStream os;
DataInputStream is;
try {
String initArgs = "javatunnel.GssTunnel nfs/anahit.desy.de@DESY.DE";
ServerSocketFactory factory = new DssServerSocketCreator(initArgs);
server = factory.createServerSocket();
server.bind(new InetSocketAddress( _port ) );
s = server.accept();
((TunnelSocket) s).verify();
DssSocket ts = (DssSocket)s;
System.out.println( ts.getSubject() );
out = s.getOutputStream();
in = s.getInputStream();
os = new PrintStream(out);
is = new DataInputStream(in);
} catch(Throwable e) {
System.out.println(e);
e.printStackTrace();
return;
}
while (!Thread.interrupted()) {
try {
System.out.println(" RECIVER Got : " + is.readLine());
System.out.println(" RECIVER to sender : " + "What?!" );
os.println("What?!");
} catch(Exception e) {
System.out.println(e);
e.printStackTrace();
break;
}
}
}
}
}