isoleth
30
2021-09-16 20:28:09
6
166

안드로이드와 라떼판다(윈도우)의 소켓통신에 대해 질문드리겠습니다.


안녕하세요

현재 졸업작품을 진행하고있는 대학생입니다.

자전거에 자이로센서가 연결된 라떼판다(윈도우가 탑재된 미니pc입니다)에 를 장착하고 사용자가 넘어지면 안드로이드에 알림이 가게 하는 프로젝트를 만들고 있는데요

현재 제가 구현한 코드를 말씀드리자면 안드로이드에서는 소켓을 만들어두어 대기하고있다가 라떼판다에서 넘어짐을 감지하면 accept()를 실행해 서로 연결되고 이후 안드로이드에서 close()를 해서 소켓의 연결을 끊습니다.

그러니깐 넘어짐이 감지되면 소켓이 연결되고 적절한 처리를 한 후에 종료되는 그런 코드입니다.

중간에 인터넷이 끊길수도 있으니깐 필요할때만 연결하는게 낫지 않을까? 라는 생각으로  코딩했지만 지금 생각해보니 굳이 이럴 필요가 있나? 란 생각이 들더라구요

 

선생님들 같은 경우에는 계속 연결시켜둔다 vs 필요할때만 연결한다 중에 어떤걸 선택하실건가요?

 

아니면 아예 넘어졌을때 안드로이드로 보내는게 아니라 서버에 저장하고 안드로이드에서 서버의 값을 확인하게 하는방식이 나을까요?

 

즐거운 추석 보내세요

0
  • 답변 6

  • mirheeoj
    13k
    2021-09-16 21:55:49

    현 상황에선 어떻게 하셔도 구현 면에선 별 차이가 없을겁니다. 어차피 인터넷은 언제든 끊길 수 있는 것이라 그때그때 연결하든 항상 연결해놓든 그에 대한 대비는 해야 하거든요. 다만 대규모 상용서비스까지 생각해보면 항상 연결해놓을 경우 단말기 숫자만큼 소켓을 유지해야 할테니 그땐 비효율적이 되겠죠. 연결이 끊겼을 경우 딱히 통신할 데이터도 없는데 연결을 복구하느라 모바일 데이터 등도 소모하게 될 것이고요. 

    본문에 안드로이드가 어떤 단말기인지 설명을 안해주시긴 했습니다만 후자의 경우도 서버가 따로 있는 편이 더 좋아보입니다. 그러면 안드로이드 접속이 어떤 이유로든 끊긴 상태라 하더라도 나중에 다시 접속했을 때 알람을 받을 수 있겠지요. 

  • isoleth
    30
    2021-09-16 22:40:09

    mirheeoj 

    먼저 답변 감사드립니다. 막힌게 뚫리는 기분이네요  그리고 위에서 언급한 안드로이드는 자전거에 거치할 스마트폰이었습니당


    역시 선배님께선 서버가 있는편이 좋다고 생각하시는군요

    서버가 있다면 서버의 db에 넘어졌다는 정보를 저장하고

    안드로이드에서 이 값을 항상 감시하다가 넘어졌다는 값이 확인되면(플래그 변수처럼)

    그때 이후의 과정을 진행하는 방식이면 될까요?

  • 더미
    16k
    2021-09-17 12:34:42

    이걸 굳이  소켓통신을..

  • isoleth
    30
    2021-09-17 13:18:12

    더미 

    선배님께서도 서버에 넘어졌다는 값을 보내고 안드로이드에서 그걸 감시하는 방식이 좋다고 보시는건가요?

  • mirheeoj
    13k
    2021-09-18 05:59:24

    isoleth // 지금은 일단 그런 식으로 구현하시는게 빠르겠지요. DB를 쓸지 말지는 서버가 알아서 할 일이고, 안드로이드는 서버하고만 통신하는 게 좋고요. 조금 발전하면 모바일 기기가 흔히 쓰는 푸시 알림 방식도 추가로 고려해볼만 할겁니다. 

    단, 더미님 말씀대로 요즘은 소켓으로 직접 저런 작업을 하는 경우는 거의 없습니다. 메시징 라이브러리, 서비스가 워낙 좋은 게 많아서요. 안드로이드, 라떼판다, 서버에 간단한 구현으로 모두 한큐에 연동가능한 서비스들이 수두룩합니다. 제가 질문에 대한 답변을 드린 이유는 내부 구조 학습용이라고 생각을 했기 때문입니다. 

  • isoleth
    30
    2021-09-20 00:46:19

    mirheeoj 

    정말 죄송하지만 제가 아직 많이 부족해서 어떤 서비스들을 말씀하시는건지 감조차 잡히지 않습니다.

    혹시 알려주실 수 있으실까요?

  • 로그인을 하시면 답변을 등록할 수 있습니다.