내 Android 프로젝트에는 방금 "MainActivity.java"액티비티가 있습니다. 같은 패키지 "GetSocket.java"에 다른 클래스 파일을 추가했습니다.자바 소켓 프로그래밍 - 안드로이드 4.1에서 작동하지 않을까요?
GetSocket.java의 기능은 소켓 연결을 통해 웹 사이트에서 호스팅되는 특정 서버로 문자열을 반환한다는 것입니다. GetSocket.java는 Java 응용 프로그램으로 단독 실행되는 경우 잘 작동합니다.
그러나 Android 액티비티를 사용하여 호출 할 때 의도 한 메시지가 반환되지 않고 그냥 StackTrace를 얻을 수없는 예외로 인해 실패합니다.
Android 4.1 버전에서 실행했을 때의 결과입니다.
그러나 동일한 코드가 Android 2.2에서 작동하며 원하는 메시지를받습니다.
MainActivity.java
public class MainActivity
{
TextView t= (TextView) getViewById(R.id.textView1);
//..
//some code
//..
String msg=GetSocket.getMessage();
//..
//some more code
//
}
GetSocket.java는
public class GetSocket
{
public static String getMessage()
{
String b;
Socket s=new Socket("<IP-Address",<Port-number>);
InputStream i=s.getInputStream();
int length=i.read(b)
return b;
}
}
NetworkOnMainThreadException에 대해 읽어보십시오. 이것에 대한 몇 가지 게시물이 있습니다. NetworkOnMainThreadException에 대해 – Rajesh
+1. 이 예외를 피하기위한 한 가지 방법은 [AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html)를 사용하는 것입니다. 소켓 응용 프로그램에서 잘 작동합니다. – jedwards