보통 채팅 프로토콜을 짜잖아.
헤더: int형, 메시지 유형
헤더: int형, 바디 사이즈
바디: 문자열
대략적으로 이렇다고 하자.
보낼때 바이트로 보내고
그럼 블로킹은 일단 프로토콜 저렇게 짜놨으니까
보내는곳에서는 3번 보내겠지
클라1이 클라2한테 '안녕 병신아' 라고 보냈을때
결론적으론 클라1이 서버에 보내는거겠지
헤더 메시지 유형은 내가 정한 상수로 쓰고
바디 문자열은 바이트로 바꿔버리고 쓰고
헤더 바디 사이즈는 바디 사이즈 쓰고
헤더 바디 순서 잘해서 3번 따다닥 써서 보냈다고 하고
그럼 보낸거를 서버어서 받아야하니까
첫번째 읽는건 메시지 유형 확정적으로 읽고
두번째 읽는거는 바디 사이즈 확정적으로 읽고
세번째는 바디 사이즈만큼 읽고
이게 다 되면 여기서 내부적으로 뭐 객체 만들어서 보내고 하잖아.
그리고 서버에서 또 메시지 유형에 따라 다시 뭐 행동하지
지금 위어는 메시지 유형이니 누구한테 보내는지도 있겠지?
그럼 서버에서 클라2로 저거 다시 저런 형태로 3번 쓰겠지
블로킹은 이런식으로 만들잖아.
근데 넌블로킹은 이런거 어떻게 설계되는거임?
보니까 셀렉터 대기되면서 키 기다리고
키 들어온게 연결, 읽기, 보내기 뭐 이러잖아.
없으면 다시 처음으로 돌아가고 말야
그럼 위에 저런 블로킹 형태처럼은 설계 못할거같은데
블로킹은 어떤식으로 해야함??
프로토콜은 위에랑 똑같다고 하고
예를들어서 클라1, 클라3, 클라5, 클라6이 동시에
뭐 메시지를 보냈어
그럼 서버에서 셀렉터에서 read로 감지되겠지
근데 문제는 첫번째는 유형, 두번째는 사이즈, 세번재 내용
이게 프로토콜 설계한거인데 클라 동시에 본내게 많아서
도중에 겹쳐지는 문제도 있을거고 만만치않은데
넌블럭쓰면 프로토콜 설계도 다르게 흐해야함?
헤더: int형, 메시지 유형
헤더: int형, 바디 사이즈
바디: 문자열
대략적으로 이렇다고 하자.
보낼때 바이트로 보내고
그럼 블로킹은 일단 프로토콜 저렇게 짜놨으니까
보내는곳에서는 3번 보내겠지
클라1이 클라2한테 '안녕 병신아' 라고 보냈을때
결론적으론 클라1이 서버에 보내는거겠지
헤더 메시지 유형은 내가 정한 상수로 쓰고
바디 문자열은 바이트로 바꿔버리고 쓰고
헤더 바디 사이즈는 바디 사이즈 쓰고
헤더 바디 순서 잘해서 3번 따다닥 써서 보냈다고 하고
그럼 보낸거를 서버어서 받아야하니까
첫번째 읽는건 메시지 유형 확정적으로 읽고
두번째 읽는거는 바디 사이즈 확정적으로 읽고
세번째는 바디 사이즈만큼 읽고
이게 다 되면 여기서 내부적으로 뭐 객체 만들어서 보내고 하잖아.
그리고 서버에서 또 메시지 유형에 따라 다시 뭐 행동하지
지금 위어는 메시지 유형이니 누구한테 보내는지도 있겠지?
그럼 서버에서 클라2로 저거 다시 저런 형태로 3번 쓰겠지
블로킹은 이런식으로 만들잖아.
근데 넌블로킹은 이런거 어떻게 설계되는거임?
보니까 셀렉터 대기되면서 키 기다리고
키 들어온게 연결, 읽기, 보내기 뭐 이러잖아.
없으면 다시 처음으로 돌아가고 말야
그럼 위에 저런 블로킹 형태처럼은 설계 못할거같은데
블로킹은 어떤식으로 해야함??
프로토콜은 위에랑 똑같다고 하고
예를들어서 클라1, 클라3, 클라5, 클라6이 동시에
뭐 메시지를 보냈어
그럼 서버에서 셀렉터에서 read로 감지되겠지
근데 문제는 첫번째는 유형, 두번째는 사이즈, 세번재 내용
이게 프로토콜 설계한거인데 클라 동시에 본내게 많아서
도중에 겹쳐지는 문제도 있을거고 만만치않은데
넌블럭쓰면 프로토콜 설계도 다르게 흐해야함?
댓글 0