2012-07-06 18 views
-2

나는 스카 이프 인스턴트 메신저처럼 만들려고 노력하고있다. 나의 생각은 클라이언트를위한 다중 연결을 처리하는 하나의 서버를 갖는 것이다. 지금 가지고있는 것은 친구 목록 등입니다.하지만 이제 대화를 처리 할 서버와 클라이언트 모두에 대한 스레드를 만들고 싶습니다. 문제는 모든 대화에 대해 서버와 클라이언트 사이에 여러 개의 연결이 필요하다는 것입니다. 그러나 나는 그것이 가능하다고 생각하지 않는다. 다른 사람이이 일을하거나 서버와 클라이언트간에 여러 연결을 만드는 다른 방법이 있습니까?자바 서버와 하나의 클라이언트 사이의 다중 연결

PS 나를 도와위한

감사합니다 : 영어는 나의 문법 실례하시기 바랍니다 내 주요 언어가 아닙니다.

+2

당신은 무엇을 시도 했습니까? * 왜 * '전화'당 한 소시트를 가질 수 없다고 생각합니까? – home

답변

1

나는 클라이언트가 방화벽이나 라우터 뒤에 있어도 어쨌든 연결을 설정할 수 있다면 항상 각 클라이언트에서 서버로 하나의 TCP 연결을 설정하는 것이 가장 좋습니다.

그런 다음 "새 대화 작성 ..."과 같은 제어 메시지가있는 프로토콜을 정의해야합니다. 그리고 서버는 새로운 대화마다 guid를 생성 할 수 있습니다. 그러면 클라이언트는 항상 하나의 연결을 통해 대화 ID로 메시지를 수신하고 보낼 수 있습니다.

업데이트 :

원래의 질문에 대답 : 예, 당신은 클라이언트와 서버 사이에 여러 연결을 만들 수 있습니다. 각 연결은 클라이언트에서 서버 포트로 열려야하며, 일단 설정되면 각 포트마다 다른 포트가 생깁니다. 각 연결을 다루는 스레드를 만들거나 논 블로킹 호출을 사용하여 모든 연결을 처리하는 스레드를 가질 수 있습니다.

+0

글쎄, 내 목표는 하나의 포트에서 모든 것을하는 것이었지만, 프로토콜 메시지에 대한 제안에 감사드립니다! 그걸 쓸거야. – user1507128

관련 문제