2013-04-22 3 views
-1

안녕하세요, 나는 클라이언트가 채팅에 참여하고 다른 클라이언트를위한 공간을 만들 수있는 소켓을 사용하여 채팅 응용 프로그램을 작성하는 데 필요한 지침을 찾고 있습니다. 나는 작동하는 채팅 응용 프로그램을 만들었지 만 클라이언트는 한 방에 있고 다른 방으로 이동할 수는 없습니다. rmi 사용자가 다른 클라이언트가 참여하고 채팅 할 수있는 공간을 추가 할 수있는 다중 회선을 사용하여 유사한 응용 프로그램을 만들었습니다. 이번엔 소켓을 사용하여 연습하고 싶습니다. 나를 도와주기위한 어떤 종류의 도움이나 안내라도 감사 할 것입니다.자바 소켓 채팅 응용 프로그램

+2

우리는 당신이 시작하게하지 않을 것입니다, 그것은이 사이트의 목적이 아닙니다. (질문을 통해 검색하고 그것에 대해 google을 사용하십시오). 그러나 문제가 있으면 해결하도록 도와 드리겠습니다. –

+0

죄송합니다. 나는 코드를 요구하지 않고있다. 나는 내가 의미하는 것을 다시 써야한다고 생각한다. 다중 클라이언트를 허용하는 다중 채팅 응용 프로그램을 만들었지 만 서버에서 클라이언트가 방을 만들 수있는 방법을 원하지 않습니다. 지금 모든 내 소켓 채팅 응용 프로그램은 모든 클라이언트를 서버 ArrayList에 추가하고 메시지가 수신되면 모든 클라이언트를 업데이트합니다. 제 질문은 클라이언트가 방을 만들거나 방에 들어 오기를 원한다면 서버를 어떻게 사용할 수 없을까요? – user629283

+0

이를위한 자체 프로토콜을 정의하고 구현하십시오. –

답변

2

는 지금까지 내가 해결할 수, 당신은 일반 IO 소켓을 통해

  • 연결하려는 아마도 소켓 당 하나 개의 독자 스레드와 NIO을 차단.
    • 각 소켓을 감싸는 핸들러 클래스를 제안합니다.
  • 은 텍스트 기반 프로토콜을 사용합니다.
    • 방에 추가하고, 방에서 제거하고, 현재 방의 목록을 가져오고, 메시지를 보내려면 명령이 필요합니다.
  • 는 하나의 클라이언트/가입/듣기이 각 방에 핸들러 세트를 필요 의미 번
    • 여러 객실에 표시 할 수 있습니다.
  • 느린 소비자를 처리하고 정상적으로 연결을 끊으려고합니다.
+0

첫 번째 사항 : 미안하지만 무슨 뜻인지는 확실치 않습니다. 두 번째 사항 : 나는 그것에 대해 생각하고 있었지만 어떻게 할 수 있는지 파악할 수 없었습니다. 나는 지금 그걸로 노력하고 놀 것이다. 3 포인트 : 맞습니다. 4 번째 포인트 : 그게 내가하고 싶은 것입니다. :). 제 5 회 : 무슨 뜻인지 이해합니다. – user629283

+0

나는 당신이 모르는 것을 모른다. ;) 원하는 경우 추가 질문을하십시오. –

+0

죄송합니다. 너무 일찍 입력하십시오 – user629283

0

통신 계층을 구현하려면 netty 또는 apache mina을 살펴 봐야합니다. 두 가지 모두 클라이언트와 서버 측의 요구 사항을 해결합니다. 나는 그들이 이미 채팅 프로토콜 샘플을 가지고 있다고 생각한다.

+0

고마워요, 그게 읽을거야,하지만 난 그냥 소켓과 서버 소켓을 사용하여 생각했다. 어쨌든 고맙습니다. – user629283

+0

두 프레임 워크 모두 nio-socket을 사용하고 저수준 항목에 대한 abstration을 제공하므로 프로토콜에 집중할 수 있습니다. – Chriss