질문 1. 서버는 클라이언트가 소켓을 닫은것을 어떻게 인지하는가 ?
- 클라이언트의 액션은
1)대화명을 보내고 (소켓을 열고)
2)while문으로 할말을 보내고,
3)ye를 입력하여 소켓을 닫습니다.
-서버입장에서보면
str(클라이언트가 보낸 할말)이 null일때 fianlly 구문을 실행(소켓을 닫음)한다고 되어있습니다.
str=null 이라는것은 클라이언트가 패킷을 보냈으나 str이 없다라는 뜻인지요?
제가 이해한 바로는 클라이언트가 소켓을 닫으면 서버한테 나 소켓 닫을꺼야라고 알려줘야 하는데
str이 null인 패킷을 보내는게 나 소켓 닫을꺼야라는 의미인것 같습니다.
실제로 소켓 닫을꺼야라는 메시지는 str이 null인것 외에도 다른정보를 포함할것 같긴 한데...
제가 이해한게 맞는지... 소켓통신에서 소켓이 끊어진것을 어떻게 인지하는지 궁금합니다.
질문 2. 서버프로그램의 액션은 client1에게 메시지(str)을 받아서 메시지(str)을 client 전원에게 뿌리는 것입니다.
이때 서버프로그램이 가져야 할 정보는 수신자(열려있는 소켓)와 메시지(str)인것 같습니다.
str은 명확히 알겠는데...
서버가 수신자 리스트를 어떤식으로 보유하는지 궁금합니다.
sendall 메소드를 보면 List
가 그에 관련된 정보를 갖고있을것같은데...잘 이해가 되지 않습니다.
---------
it를 처음 접하게 되서 제가 생각하는바와 jvm이 돌아가는 논리적 흐름이 달라 많이 헷갈리기도 합니다...
질문이 허접하니 답변이 어려울것이라 생각되는데 ^^;;
우매한 저를 깨우칠 답변을 부탁드립니다 ㅠㅠ !