multithreading - Tunneling two socket client in java -


i'm trying interconnect 2 socket clients connected single remote server. case is:

  • client_1] connect server
  • client_2] connect server
  • server] create tunnel between client_1 , client_2
  • client_1] write "something"
  • client_2] (that waiting messages) receive "something" client_1

and viceversa.

that's code:

package jtestsock;  import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.ioexception; import java.io.inputstreamreader; import java.io.outputstreamwriter; import java.io.printwriter; import java.net.serversocket; import java.net.socket; import java.util.list;  /**  *  * @author massimodeluisa */ public class server extends thread{  private list<socket> clients; private serversocket server; private int port = 5001; private bufferedreader input; private printwriter output;  public server() {     try {         server = new serversocket(port);      } catch (ioexception e) {         system.out.println("impossibile istanziare il server: "+e.getmessage());     } }  @override public void run() {     system.out.println("waiting client message...");      //     // server loop here accept connection initiated     // client application.     //     while (true) {         try {             socket socket = server.accept();             system.out.println("connection received!");              clients.add(socket);               /* read response */             input = new bufferedreader(                     new inputstreamreader(                     socket.getinputstream()));              output = new printwriter(                     new bufferedwriter(                     new outputstreamwriter(                     socket.getoutputstream())));              if(clients.size()>0){                 socket first    = new socket();                 socket second   = new socket();                  first = clients.get(1);                 second= clients.get(2);     // || second = socket;                  // ??? tunneling input , output between 2 clients             }          } catch (ioexception e) {             system.out.println("client connection error: "+e.getmessage());         }     } } } 

can me please? :)

update:

clients.size()>0 should >=2 want have atleast 2 sockets not 1 – boxed__l 6

sorry, you're right...thanks!

update:

do plan on having 2 clients? because 1 thing can when 1 client sends information server relay information other client. if plan on having multiple clients though, suggest assigning each client uid. – josh m 10 mins ago

yes, make point point connection between 2 client, passing server, proxy server...

the server must accept more 2 connection, , making 2 thread on server writing , reading redirect messages 1 client 2 other, the cpu saturated.

(ps. sorry english xd)

i way (simplified version):

class server extends thread     ...         public void run() {             while (true) {                 try {                     socket s1 = server.accept();                     socket s2 = server.accept();                     new client(s1, s2).start();  // reads s1 , redirects s2                     new client(s2, s1).start();  // reads s2 , redirects s1                 } catch (ioexception e) {                     system.out.println("client connection error: " + e.getmessage());                 }             }         }  class client extends thread {     socket s1;     socket s2;      client(socket s1, socket s2) {         this.s1 = s1;         this.s2 = s2;     }      public void run() {         try {             inputstream = s1.getinputstream();              outputstream os = s2.getoutputstream();             (int i; (i = is.read()) != -1; i++) {                 os.write(i);             }         } catch (ioexception e) {             e.printstacktrace();         }      } } 

Comments

Popular posts from this blog

assembly - 8086 TASM: Illegal Indexing Mode -

Java, LWJGL, OpenGL 1.1, decoding BufferedImage to Bytebuffer and binding to OpenGL across classes -

javascript - addthis share facebook and google+ url -