안녕하세요 ^^ 정말 오래간만에 글을 올리네요 ~
이번에 다시 안드로이드 개발하면서 질문을 올립니다.
현재 소켓 통신 이용해서 PC를 서버로 두고 안드로이드를 클라이언트로 하여 접속을 시도 중입니다.
public class TCPClient implements Runnable {
public void run() {
try {
// 서버의 주소를 로컬호스트라고 127.0.0.1로 하는 삽질은 하지말것 -_-;
InetAddress serverAddr = InetAddress.getByName("211.189.20.122");
Log.d("TCP", "C: Connecting...");
Socket socket = new Socket(serverAddr, 4444);
String message = "Hello from Client";
try {
Log.d("TCP", "C: Sending: '" + message + "'");
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
Log.d("TCP", "C: Sent.");
Log.d("TCP", "C: Done.");
} catch(Exception e) {
Log.e("TCP", "S: Error", e);
} finally {
socket.close();
}
} catch (Exception e) {
Log.e("TCP", "C: Error", e);
}
}
}
서버는 자바로 구현하였습니다. (자바 대 자바 통신은 무리 없이 잘 되는데 자바 대 안드로이드 에뮬레이터 통신은 잘 되지 않고 있습니다.)
에러 코드는 다음과 같습니다.
C:Connection
C: Error
java.net.SocketException: Permission denied(mabe missing INTERNET permission)
at org.apache.harmony luni.platform.OSNetworkSystem.createSocketImple(Native Method)
...
...
..
..
at java.lang.Thread.run(Thread.java:)
입니다.
코드 상의 문제는 없는 것 같은데요.. 혹시 permission이라는 단어가 걸려서. SocketPermission쪽을 보고 있습니다.
답변 부탁드립니다.
<uses-permission android:name="android.permission.INTERNET" />
요넘이 추가 되어야 하는게 아닌가 하는 생각이 듭니다...