2011-03-15 57 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(); 
} 

添加一些异常处理,流关闭和逻辑:-)