안녕하세요.. 늘상 질문만 하고 도움 많이 받아가는 김봉준입니다..--;
넵.. 다름이 아니라 또 질문 할려구요.. ^^;
Socket을 이용해서 간단한 프로그램을 작성하는데요..
Client와 Server의 Type을 Blocking Mode로 하고 싶습니다..
(NonBlocking는 절대 안할렵니다.. 강요하지 말아주세요.. ^^;)
근데 이게 말이죠.. NonBlocking Mode로 하면 쉽게 Client와 Server가 통신이 가능하걸랑요..
보낼때는 ServerSocket.Socket.Connections[0].SendText('보내는 내용')와
ClientSocket.Socket.SendText('보내는 내용') 를 이용해서 보내면 되고,
받을때는 onClientRead나 onRead 이벤트에서 처리를 해주면 되더라구요..
근데.. BlockMode에서는 위와 같이 하니까 안되더라구요.. 책을 찾아봐도 언급된 내용이 없구요..
BlockingMode에서는 어떻게 하지요? 정말 궁금합니다...
> 안녕하세요.. 늘상 질문만 하고 도움 많이 받아가는 김봉준입니다..--;
>
> 넵.. 다름이 아니라 또 질문 할려구요.. ^^;
>
> Socket을 이용해서 간단한 프로그램을 작성하는데요..
>
> Client와 Server의 Type을 Blocking Mode로 하고 싶습니다..
>
> (NonBlocking는 절대 안할렵니다.. 강요하지 말아주세요.. ^^;)
>
> 근데 이게 말이죠.. NonBlocking Mode로 하면 쉽게 Client와 Server가 통신이 가능하걸랑요..
>
> 보낼때는 ServerSocket.Socket.Connections[0].SendText('보내는 내용')와
>
> ClientSocket.Socket.SendText('보내는 내용') 를 이용해서 보내면 되고,
>
> 받을때는 onClientRead나 onRead 이벤트에서 처리를 해주면 되더라구요..
>
> 근데.. BlockMode에서는 위와 같이 하니까 안되더라구요.. 책을 찾아봐도 언급된 내용이 없구요..
>
> BlockingMode에서는 어떻게 하지요? 정말 궁금합니다...
>
>
>
안녕하셔요? 조규춘입니다.
> (NonBlocking는 절대 안할렵니다.. 강요하지 말아주세요.. ^^;)
네~! 절대로 강요않겠습니다.
그럼 우선 BlockingMode 이거에 대해서 알아야 겠지요!
클라이언트소켓의 속성중에
clienttype 라고 하는 속성에 대하여 설명을 하자면은요... (알고계신다면 제가 실수 히~!)
클라이언트 소켓이 소켓 연결을 통해서 정보를 읽고, 쓰는 작업을 비동기적으로 할 것인지 아니면 동기적으로 할 것인지를 결정하는 속성으로 ctnonblocking과 ctblocking 두가지 값이 있지요
ctnonblocking이면 읽고 쓰는 작업을 비동기적으로 실행합니다.
ctblocking이면 동기적으로 처리한데요! 그래서 버리 읽기 쓰기 작업을 할려믄
★★ TWinsocketStream 개체를 사용해야 한데요.....
TWinsocketStream는 데이터를 읽고 쓰는 동안 에러가 생길때 응용프로그램이 멈추는 것을 막을수가 있다고 하네요~!
이상 줄일께요! 행복하셔요~!