티스토리 뷰

안녕하세요. 오늘을 날개라는 프로젝트를 진행하면서 얻은 Socket통신에 대한 경험을 공유하고자 합니다.
현재 안드로이드와 라즈베리파이간의 통신을 Socket을 이용하고 있습니다.
관련 코드은 하단에서 확인하실 수 있습니다. (Star와 Issue는 언제나 환영!)
Kotlin과 RxJava로 이루어진 Socket Client 통신

Socket를 사용하는 이유

IoT와 안드로이드 어플간의 통신은 보통 블루투스로 구현합니다.
하지만 블루투스 통신의 페어링은 굉장히 귀찮은 과정입니다...
그래서 페어링 없는, 어플만 켜면 자동으로 연결되는 통신을 원했으며
같은 네트워크에 있다면 아무런 과정없이 연결할 수 있는 Socket을 사용하게 되었습니다.

Socket 통신 With Kotlin, Python

Socket은 클라이언트와 서버로 나뉩니다.
한명은 Server가 되어 Client를 기다리며 Client는 Server기기의 IP를 통하여 Server에 접속합니다.

Socket Client Kotlin

Socket Server Kotlin

Socket Client Python

Socket Server Python

어떠신가요? 별로 어렵지 않죠? 위 코드들을 따라하면 쉽게 Socket 통신을 구현하실 수 있습니다.

Socket통신을 하면서 한 삽질 공유

  1. 안드로이드에서 Socket과 같은 네트워크 동작은 main 쓰레드에서 하면 안됩니다.
  2. Socket이 close되지 않고 예외로 인한 강제종료가 발생 할 때
    다른 기기의 Socket은 끊겨있는지 모릅니다. available이나 isClosed로 확인 안됩니다.
    (이거 때문에 애 많이 먹었습니다. 참고하세요!)

제 글로 인해 많은 사람들에게 도움이 되기를 바라며... 

감사합니다!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday