JAVA

자바 60강. 다대다 통신(1)

JJJAEOoni 2022. 2. 15. 23:37
반응형

 

우리는 지금까지 1:1로 통신하는

P2P(Point-to-Point) 통신을 만들었다.

 

다른 클라이언트가 서버에 접근을 할 수 없는 것이다.

 

또한 클라이언트와 클라이언트끼리

통신할 수 없다.

 

두 클라이언트 중 하나는 무조건

서버 소켓을 가지고 있어야 하기 때문이다.

이때 여러명의 클라이언트가

서버에 접근하여

다대다 통신을 하기 위해서는 어떻게 해야 할까?

 

 

가운데 서버 소켓에

클라이언트 소켓들이 연결하여

서버 소켓을 중계자 역할로 두어

서버 소켓을 거치며 통신한다.

 

이때 여러 명의 클라이언트가 접속하는 것을 확인하기 위해

서버 소켓 리스너의 독립적인 스레드가 필요하다.

 

클라이언트들이 서버 소켓에 연결하면

각각의 새로운 소켓이 생성되고

BufferedReader, BufferedWriter

버퍼도 만든다.

 

이때 각각의 소켓에

클라이언트로부터 요청받으면

읽어 들이고, 응답해주는 스레드가 1개 필요하다.

 

철수가 서버 소켓에게 "안녕"을 write 하고

서버 소켓이 read 한 후,

연결되어있는 모든 클라이언트들에게 

다시 write 해준다.

 

철수가 영희에게 "같이 점심 먹자"라고 보내도

서버 소켓은 모두에게 메시지를 write 하게 되어

기철이에게까지 메시지가 전달되는 것이다.

 

메시지를 받은 영희는

누가 메세지를 보낸지도 알 수가 없다.

 

이때 클라이언트끼리 다이렉트로

귓속말을 하기 위해서는 프로토콜이 필요하다.

프로토콜이 있어야

목적이 있는 통신이 가능하다.

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

 

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

 

 

 

 

반응형