관리 메뉴

Humaneer.net

Android에서의 TCP/IP 통신 본문

Engineering/Android

Android에서의 TCP/IP 통신

비회원 2008.01.20 07:36
안드로이드 에뮬레이터와 데스크탑 서버간 TCP/IP통신을 하는 간단한 코드이다.
보통 이런 테스트는 loopback을 이용하면 되지 않을까? 라고 착각하는 사람들이 굉장히 많을 것이다.
그래서 서버의 주소를 getLocalHost()를 통해 가져오게 되면 완전 삽질이다.
왜냐? 안드로이드 에뮬레이터의 localhost는 안드로이드 에뮬레이터의 네트웍이지 데스크탑의 네트웍이 아니기 때문이다. 따라서 아래의 소스코드는 일단 네트웍이 돌아가는 컴퓨터에서만 작동이 가능하다.


- Android Client의 메인부분



- Client의 실제코드




- 데스크탑 서버 코드
신고
10 Comments
  • 프로필사진 Favicon of http://sayong.tistory.com BlogIcon SaYong 2008.01.23 15:35 신고 아주.. 그냥.. JAVA 보기만 해도 다리가 후덜덜 거리네~~ ㅠㅠ
  • 프로필사진 Favicon of http://catcher.tistory.com BlogIcon Holden Caulfield 2008.01.24 10:47 신고 나도 후덜덜이다. ㅋㅋ
  • 프로필사진 BlogIcon Wednesday 2010.03.06 16:56 신고 이클립스에서 실행시켜봤는데

    # A fatal error has been detected by the Java Runtime Environment:
    #
    # Internal Error (classFileParser.cpp:3174), pid=256, tid=3468
    # Error: ShouldNotReachHere()
    #
    # JRE version: 6.0_18-b07
    # Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode windows-x86 )

    이런 에러가뜨면서 Java sun에 버그리포팅 해보라고 떠요. 왜 그런지 혹시 아시나요? ㅠ
    android project로 했는데 실행이나 버전 무엇으로 했는지 알려주세요.
  • 프로필사진 Favicon of http://humaneer.net BlogIcon Humaneer 2010.03.08 11:04 신고 아 안녕하세요, 댓글을 늦게 확인했네요.

    위의 코드는 2008년 1월 경에 작성된 코드입니다.
    제가 안드로이드를 2008년 2~3월 까지 하다가 그 뒤로는 거들떠 보지도 않은지라... 기억이 나는 것이 없네요.

    답변 못드려서 죄송합니다.
  • 프로필사진 JiChinNum 2010.03.19 12:34 신고 좋은글 잘보고 갑니다.
  • 프로필사진 JiChinNum 2010.03.19 14:40 신고 근데 이코드 어떻게 사용해야죠>?;;
  • 프로필사진 Favicon of http://100song.blogspot.com/ BlogIcon Daylight 2010.05.26 13:51 신고 유용한 글 잘봤어요~

    그런데,
    wifi통신구현에서, xml 퍼미션을 추가 해주지 않고 다른방법으로 구현하는 방법은 없을까요??
    질문드립니다. ㅠ
  • 프로필사진 Kluster86 2011.02.24 04:42 신고 코드부분이 잘못된게있는거 같네요
    데탑서버코드에서 17번째줄 while문밖으로 내보내야네요
    저렇게하면 메시지가 한번만 가고 뻗어버립니다
  • 프로필사진 Favicon of http://humaneer.net BlogIcon Humaneer 2011.03.23 14:06 신고 음.. 제가 오래전에 작성한 코드라 잘 기억은 안나지만.

    일부러 메시지 한 번 받고 끊고, 다시 접속요청오면 한 번 받고 끊고.. 그렇게 의도한 코드인듯 합니다 .-0-;;
  • 프로필사진 bnote 2012.02.13 21:12 신고 좋은 글 잘 보았습니다. 감사합니다. 그런데 질문이 있습니다. 여쭤봐도 될까요? 답변해 주시면 갈증이 쏵 풀리겠습니다.^^
    첫째는 한 프로젝트에 위의 소스를 3개를 모두 추가 해서 run 시키는 건가요? (아래 설명 있음)
    둘째는 프로그램이 잘 동작한다는 것을 어떻게 알수 있죠? 즉 결과가 어떻게 나와야 하는 건지요? Test를 어떻게 해야 하는 것인지에 대한 얘기이기도 하구요. 즉 server와 client쪽 프로그램을 모두 한 컴퓨터에서 테스트 하는가 하는 건가요?

    첫번째에 대한 추가 설명은 다음과 같아요.
    위의 코드를 한 프로젝트 내에서 package를 다르게 구성하고 run을 해봤습니다. 즉 하나의 프로젝트아래 android.TCPDesktopServer란 package와 Android.SocketTest란 package를 만들었습니다.
    그런후 TCPDesktopServer란 package 에는 TCPDesktopServer.java 화일을 추가하였고, Android.SocketTest란 package 에서는 SocketTest.java와 TCPClient.java를 추가하였습니다.
댓글쓰기 폼