옵션 |
|
IT에 입문한지 얼마 안 된 프로그램 초보입니다.
책을 보고 있는데 헛갈리는 부분이 있어 질문 드립니다.
카카오톡 같은 다중 채팅 프로그램을 만들려고 하고 있습니다.
책을 보면
[별 문제가 없으면 서버는 연결 요청을 받아들이고 새로운 포트 번호를 가지는 새로운 소켓을 만든다.
이후부터는 새로 만든 소켓을 이용해 서버와 클라이언트트 통신 할 수 있다] 라고 되어 있습니다.
그런데
[ 클라이언트A <-> 서버 <-> 클라이언트B ]의 통신에서 의문이 생깁니다.
프로그램의 순서를 보면,
1. ServerSocket ss = new ServerSocket(8000);
서버 측은 소켓a를 만들어 놓고 8000번 포트로 접속이 오기까지 기다립니다.
2. 이때 클라이언트 A가 자신의 소켓을 만들고 서버측 8000번 포트로 접속을 요청합니다.
3. Server sock = ss.accept()
서버 측의 소켓 a는 클라이언트 A의 접속 요청을 확인하고 새로운 소켓b를 만들어 클라이언트A의 소켓과 통신 합니다.
4. 서버측의 소켓 a는 새로운 접속을 기다립니다.
5. 클라이언트 B가 자신의 소켓을 만들고 서버측 8000번 포트로 접속을 요청합니다.
6. 서버 측의 소켓 a는 새로운 접속을 확인하고 새로운 소켓 c를 생성하여 클라이언트 B의 소켓과 연결합니다.
이걸 간단하게 보면
서버측 소켓 a = 연결 요청 대기
서버측 소켓 b <-> 클라이언트 A의 소켓
서버측 소켓 c <-> 클라이언트 B의 소켓
이렇게 볼 수 있는데 이 상태에서 클라이언트 A와 B가 어떻게 서버를 거쳐서 통신 할 수 있는지 모르겠습니다.
제 해석이 맞다면 통신은 불가능합니다.
서버 측의 소켓 b와 c는... 서로 다른 소켓이니까요...
제가 이해 한 것이 맞는건지 모르겠습니다... 지적 부탁드립니다..