자바 60강. 다대다 통신(1)
우리는 지금까지 1:1로 통신하는
P2P(Point-to-Point) 통신을 만들었다.
다른 클라이언트가 서버에 접근을 할 수 없는 것이다.
또한 클라이언트와 클라이언트끼리
통신할 수 없다.
두 클라이언트 중 하나는 무조건
서버 소켓을 가지고 있어야 하기 때문이다.
이때 여러명의 클라이언트가
서버에 접근하여
다대다 통신을 하기 위해서는 어떻게 해야 할까?
가운데 서버 소켓에
클라이언트 소켓들이 연결하여
서버 소켓을 중계자 역할로 두어
서버 소켓을 거치며 통신한다.
이때 여러 명의 클라이언트가 접속하는 것을 확인하기 위해
서버 소켓 리스너의 독립적인 스레드가 필요하다.
클라이언트들이 서버 소켓에 연결하면
각각의 새로운 소켓이 생성되고
BufferedReader, BufferedWriter
버퍼도 만든다.
이때 각각의 소켓에
클라이언트로부터 요청받으면
읽어 들이고, 응답해주는 스레드가 1개 필요하다.
철수가 서버 소켓에게 "안녕"을 write 하고
서버 소켓이 read 한 후,
연결되어있는 모든 클라이언트들에게
다시 write 해준다.
철수가 영희에게 "같이 점심 먹자"라고 보내도
서버 소켓은 모두에게 메시지를 write 하게 되어
기철이에게까지 메시지가 전달되는 것이다.
메시지를 받은 영희는
누가 메세지를 보낸지도 알 수가 없다.
이때 클라이언트끼리 다이렉트로
귓속말을 하기 위해서는 프로토콜이 필요하다.
프로토콜이 있어야
목적이 있는 통신이 가능하다.
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9