본문 바로가기

IT Data/#Android

# 안드로이드 소켓 통신 (노트북 - 단말기)


#. 사용되는 중요 메소드 & 클래스

이 글은 "정보문화사 - 안드로이드 프로그래밍" 책을 참조하고 있습니다.


ChatServer 자바 프로젝트
- ChatServer.java
- ChatServerThread.java

  • Soket 안드로이드 프로젝트
    - SoketEx.java


(2) 스레드의 생성 - 프로그램 실행 단위.
    - 여러 개의 처리를 동시에 실행하는 것이 가능해 짐.
    - Thread 클래스를 상속한 클래스가 Runnable 인터페이스를 정의한 객체에 Thread 객체를 생성하고 start() 메소드를 호출 함.
    - Override한 run() 메소드 내의 처리가 호출한 곳과는 다른 스레드로 실행되게 함.

(3) 소켓 접속 - 최초에 통신할 컴퓨터와 접속
    - Socket(String ip, int port) : ip주소와 port 번호를 반환
    - 입력스트림: getInputStream / 출력스트림: getOutputStream

(4) 수신 루프 - 소켓이 접속되어 있다면, 수신을 무한 반복하게 함.
    - boolean isConnected: 소켓 접속이 되어 있는지 여부 확인.

(5) 데이터 수신
     - 소켓 입력 스트림의 read() 메소드로 바이트 배열을 읽어 데이터를 수신합니다. read() 메소드를 호출하면, 소켓이 데이터를
        수신할 때까지 무한 대기하다가 데이터를 수신하면 수신한 데이터를 바이트 배열로 변환합니다. 이 프로그램에서는 크기가
        0 이상일 때에는 문자열로 변환해서 화면에 표시합니다.

(6) 핸들러에 의한 사용자 인터페이스 조작
    - Android의 사용자 인터페이스 (EditText등) 조작은 반드시 스레드 핸들러로부터 실행할 필요가 있습니다.
        해당 핸드럴 이외의 스레드로부터 조작하면 곤란해 집니다. 스레드를 스스로 생성하고 있으므로, 직접 조작이 불가능 함.
        그래서 자신이 사용할 주 스레드내의 핸들러도 스스로 생성하고, 핸들러를 통해 사용자 인터페이스를 조작하도록 함.
        Handler 객체를 생성한 후, Handler 클래스의 post() 메소드에 Runnable 인터페이스의 정의를 전달 합니다.



★★ Java프로젝트로 구성된 서버가 먼저 실행 되어야 동작이 가능 합니다. ★★