2012-04-26 2 views
2

Java 응용 프로그램으로 완벽하게 작동하는 서버 및 클라이언트 코드가 있습니다. 서버는 로컬 컴퓨터에서 실행되며 포트 4444에서 수신 대기합니다. 모든 Java 응용 프로그램은 쉽게 연결할 수 있지만 코드를 Android로 이동하면 내가 시도하는 것과 상관없이 IOException이 계속 발생합니다. "localhost"를 "10.0.2.2"로 변경해야한다는 것을 알았지 만 여전히 IOException이 발생합니다. whatsmyip.org에서 내 IP 주소를 시도했지만 여전히 IOException을 제공합니다. 여기 내 안드로이드 코드는 ... 나는 당신이 당신의 서버와 같은 네트워크 장치에 안드로이드 클라이언트를 실행 알고있는 것처럼Android 프로그램을 로컬 호스트 서버에 연결하는 방법은 무엇입니까?

package test.myPackage; 

import java.io.IOException; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class TestProjectActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView tv = new TextView(this); 
     tv.setText("Hello, Android"); 
     setContentView(tv); 

    Socket s = null; 
    try { 
     s = new Socket("10.0.2.2", 4444); 
     tv.setText("socket: CONNECTED!"); 
    } catch (UnknownHostException e) { 
     tv.setText("socket: unknown host"); 
    } catch (IOException e) { 
     tv.setText("socket: IO Exception"); 
    } 
} 

}

+0

로컬 네트워크의 IP는 무엇입니까? Linux 또는 Windows를 사용하고 있습니까? 윈도우즈에서는 명령 창을 열고'ipconfig'를 입력하십시오. 그냥'IPV4'를 코드에 넣으십시오. 리눅스에서 터미널을 열고'ifconfig'를 실행하십시오. 분명히 ISP가 외부에서 컴퓨터에 대한 액세스를 차단했습니다. 공개 IP는 원하는 것이 아닙니다. –

답변

2

먼저 앱에 인터넷 권한이 있는지 확인하십시오.

10.0.2.2 별칭을 사용할 수있는 유일한 방법은 응용 프로그램이 에뮬레이터에서 실행 중이고 호스팅 컴퓨터에서 실행중인 프로그램에 문의하려는 경우입니다. 이 은 실제 안드로이드 기기와 함께과 작동하지 않습니다.

실제 안드로이드 장치의 경우, 서버를 호스팅하는 PC와 동일한 무선 네트워크에 장치를 설치하고 테 더링 솔루션을 악용하여 USB 케이블을 통해 동일한 네트워크에 연결하는 방법을 찾아야하며, 장치의 모바일 네트워크 연결을 통해 서버에 연결할 수 있도록 인터넷을 외부에서 접근 할 수있는 시스템으로 서버를 이동하십시오.

그리고 EvilDuck은 UI 스레드를 악용하는 점에 분명히주의해야합니다.

+0

내 앱에 인터넷 권한이없는 문제가있었습니다. 매니페스트에 을 추가하고 이제 작동합니다. 감사! – user1080952

0

? 그런 다음 서버 내부 IP를 사용해야합니다. 여기서 로컬 호스트는 장치의 서버를 분명히 검색합니다.

whatsmyip.org가 외부 IP를 제공합니다.

장치가 실제로 동일한 네트워크에 있는지, 올바른 내부 IP를 사용 중인지 확인하십시오. 서버에 LAN 용 포트를 차단하는 방화벽이 없는지 확인하십시오.

그리고 UI 스레드에서 네트워크 활동을 중지 ffs !!!

관련 문제