인프런 커뮤니티 질문&답변
Disconnect에 관한 질문입니당
작성
·
219
답변 2
1
AcceptHandler에서 하는 코드를 유심히 보면,
1) session.Send로 메시지를 보내고
2) Thread.Sleep로 잠시 대기하고
3) session.Disconnect을 이용해 연결을 끊어버립니다
일상으로 비유하면
1) 전화를 받아서 한마디를 한 다음
2) 잠시 대기하고
3) 전화를 끊어버리는
것과 유사합니다.
현재는 간단한 테스트를 하기 위해 클라한테 메시지를 보내고,
잠시 대기한 다음에 끊어버리는 것인데요.
물론 나중에 게임 서버를 다 조립하게 되면,
메시지를 보내고 바로 끊는게 아니라
클라가 게임을 마치고 종료할 때 비로소 네트워크 연결을 끊게 됩니다.
아무튼 1 단계의 Send는 보낸다고 즉시 처리되는게 아닙니다.
왜냐하면 상대방 쪽에서 데이터 수신하는 과정을 거쳐야 하기 때문이죠.
그래서 간단하게 테스트를 하기 위해 잠시 강제로 대기를 타고 있는데
그것이 2번의 Thread.Sleep에 해당합니다.
만약 대기타는 2번 부분을 삭제하고,
메시지를 보내마자 3번 Disconnect를 해버리면,
수화기를 들어서 "여보세ㅇ~~"를 말함과 동시에 전화를 끈 것과 똑같아집니다.
연결이 끊겼으니 더 이상 메시지를 전송할 수 없고
그래서 저런 SocketException이 일어나는 것입니다.
뭔가 엄청 큰 문제가 일어난 것은 아니고,
말 그대로 전화를 꺼버린 다음에 말하고 있으니
당연히 전송될 수 없기에 저렇게 에러를 띄워 주는 것이죠.
결론 :
저 부분은 깊이 생각하실 필요 없고
어차피 나중에 가면 바로 보내마자 Disconnect를 하진 않습니다.
0





