2011-03-15 55 views
0

所以我想讓一個應用程序通過Wi-Fi發送數據到另一個。由於IP是私人的,對於用來運行應用的設備,我想我應該這樣做,以便使這兩個應用進行通信:幫助設置兩個應用程序的遠程服務器

App1 < ------> RemoteServer < -------> App2

我需要幫助來設置將只接收來自App1的數據並將它們轉發給App2的服務器。我想我應該使用套接字兩個應用程序,我必須使用2個套接字?我如何將從app1收到的數據傳遞給app2?

我將使用Java。

Ty提前。

回答

0

是的,兩個套接字是正確的(如果你不想通過HTTP或類似的隧道)。

public void proxy() { 
    ServerSocket s = ...; 
    Socket app1 = s.accept(); 
    Socket app2 = s.accept(); 
    InputStream app1Input = app1.getInputStream(); 
    InputStream app2Input = app2.getInputStream(); 
    OutputStream app1Output = app1.getOutputStream(); 
    OutputStream app2Output = app2.getOutputStream(); 

    pipeInToOut(app1Input, app2Output); 
    pipeInToOut(app2Input, app1Output); 
} 

public void pipeInToOut(final InputStream in, final OutputStream out) { 
    new Thread() { public void run() { 
     byte[] buffer = new byte[2000]; 
     int r; 
     while((r = in.read(buffer) > 0) { 
      out.write(buf, 0, r); 
     } 
    }}.start(); 
} 

添加一些異常處理,流關閉和邏輯:-)