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

것은

:-) 몇 가지 예외 처리, 스트림 폐쇄 및 로직을 추가
관련 문제