본문 바로가기

Programming/TCP/IP

TCP/IP를 이용한 PC-Android 통신

Server : Window 7 / C Language

Client : Android(Froyo(ver 2.2) API 8) / Java Language 

 

[Server]Window/C Language

 

[Client]Android/java Language

 

<알아 두고 갈것들>

1.퍼미션 권한주기.

  -안드로이드 어플리케이션 소켓 개발시 메니페스트 파일에 퍼미션을 지정해주어야 소켓을 생성 또는 연결을 할수 있다.

  - <uses-permission android:name="android.permission.INTERNET"/>

2.데이터 송/수신 루프는 Thread보다는 AsyncTask를 이용할것.

 - android 4.0 ICS 버전이상부터는 UI(Main) Thread에서 네트워크 연결을 막아놓은 것 같다.

   스레드를 사용할거면, sub스레드를 생성하여 해야 할것이고, 만약 그래도 에러가 발생된다면 임시방편으로

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

      StrictMode.setThreadPolicy(policy);

    위의 코드를 추가로 임시방편 할 수 있다. 하지만 안드로이드에서는 AsyncTask 사용을 권장한다는 것을 잊지말자.

3.IP확인하기.

  -클라이언트의 IP주소는 사설이여도 상관은 없지만, 서버의 IP주소는 반드시 공인IP주소이여야한다.

  -http://www.findip.kr/ip_info.php

4.기타

 -3G는 고정IP로 지급되며, WIFI는 자동IP를 부여받는다.

 -필자는 학교IP를 서버로 잡아 3G로 접근(클라)하였으나 되질 않앗다. 학교에서 외부 ip접근을 일부 막아놓은것이다.

  그러나, WIFI로 접근(학교)하자 같은 네트워크이어서 인지 서버에 접근이 가능햇다.

  평소 같았으면 3G가 되고 WIFI가 안됫어야 하지만, 이런 예외도 있으니 확인 바란다. 또한 공유기를 통해 WIFI를 잡는거라면 WIFI도

  고정 IP처럼 쓸수잇으니 참고바란다.