마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드와 자바 서버 연결하고싶은데 포트2개를 열고 싶습니다.

0 추천
포트를 2개 열고 싶은데.. 두개다 데이터종류가 그냥 String 입니다.

 

혹시 자바에서 스레드를 2개를 열면 안되는건가요?

 

예를들어 쓰레드1 -> 채팅기능 포트5000

쓰레드 2 = > 그림판기능 포트 5001

 

같이 다른 기능에 대한 정보를 따로 받아야 해서요...

 

이렇게 구현 하려고하는데 input데이터 를 구별할 수 가 없으니까.. 자바에서 쓰레드 2개를 만들고 사용하고 싶은데 그렇게 하면 자꾸 5000번의 것만 통신이되고 5001번을 통신하려면 안드로이드 클라이언트가 죽습니다.

 

또한, 두개의 기능을 포트번호만 바꾸어 하면 5000번의 통신은 되고, 5001번의 통신은 안됩니다. ex)첫번째 실험은 5000번에 채팅기능, 5001번에 그림판기능 -> 그림을 그리면 클라이언트 종료(널포인트 익셉션), 채팅기능은 정상작동.

두번째 실험은 5001번에 채팅기능 5000번에 그림판기능 -> 그림을 그리면 서버로 데이터가 정상적으로 들어감, 채팅을 치면 클라이언트 종료(null point 익셉션) 입니다..

위를 유추해보면 5001번부분을 코딩한 서버부분이 잘못된거같은데..

5000번과 거의 비슷하게 만들고 5001번부분은 변수를 변경해서 햇갈리지 않게 만들었습니다.

아니면 아예 코딩을 다른 .java에서 해야되는건지 조언을 구해봅니다..
haenara90@naver.com 님이 2016년 9월 27일 질문
logcat에 에러날때의 java 파일명과 라인번호까지 찍혀서 나옵니다.
해당 위치에서 어떤 변수가 null 인지 확인후 역추적하시면 되세요.
혹 스트림을 두 쓰레드 간에 공유하고 계신거는 아니죠? 멤버변수나, 전역변수 등으로 사용하시지는 않으시리라 생각합니다만...

1개의 답변

0 추천
이론적으로 port가 겹치지만 않으면 복수개로 포트를 개방하는것은 문제가 되지 않습니다.

 

앱이 죽는다고 하셨는데 죽었을때 에러메시지와 문제가 되는 부분의 코드를 같이 올려주시면

구체적인 답변에 도움이 됩니다.
Development Guy (70,570 포인트) 님이 2016년 9월 27일 답변
감사합니다. 그 제가 멀티쓰레딩을 못하는거 같습니다. 자바 서버를 2번 연속으로 실행하면 정상적으로 작동이됩니다. 제생각엔 클라이언트 코딩이아니고 서버코딩이 잘못된거 같습니다. 혹시 한번에 2개의 쓰레드를 실행 하는 방법에 대해서 조언을 좀 구해보고싶습니다.
그냥 Thread 각각 생성해서 start 해주시면 됩니다.
조금더 advanced한 방법으로 해보고 싶으시다면 ExecutorService 관련해서 검색해보세용.
...