호기심에서 ThreadBlocking 유형 인 경우 TServerSocket/TClientSocket의 어떤 이벤트가 시작됩니까?차단 소켓에 어떤 이벤트가 발생합니까?
답변
TClientSocket
은 차단 모드이며 OnRead
및 OnWrite
을 제외한 모든 이벤트를 발생시킵니다. 또한 OnDisconnect
이벤트는 클라이언트가 소켓의 자체 끝을 닫을 때만 원격 연결 끊기에서 트리거되지 않습니다. 이러한 소켓 상태를 감지하는 것은 데이터 읽기/쓰기 코드의 책임입니다. 가독성은 TWinSocketStream.WaitForRead()
또는 WinSock select()
함수를 통해 감지됩니다. 쓰기 가능 여부는 WinSock select()
기능을 통해서만 탐지됩니다. 원격 분리 먼저 검출 readablity에 의해 감지 된 후 TCustomWinSocket.ReceiveBuf()
또는 TWinSocketStream.Read()
는 기본적으로 모든 이벤트 모드 화재 차단에
TServerSocket
0을 반환. 그러나 가상 ClientExecute()
메서드를 재정의하고 OnGetThread
이벤트에서 해당 클래스의 인스턴스를 반환하는 TServerClientThread
클래스를 파생하는 경우 OnRead
및 OnWrite
이벤트가 손실되므로 유사한 논리를 사용하여 차단 모드에서 TClientSocket
과 유사한 논리를 검색해야합니다 그 소켓 상태.
마지막 질문, ClientExecute 안에, 나는 오직 읽기/쓰기 만 처리한다. –
'ClientExecute()'를 오버라이드하면 연결을 관리해야한다. 'Terminated'가 참이거나 소켓이 연결이 끊어지면 ('ClientSocket.Connected'가 거짓인지 아닌지를 검사합니다. 그러나 다른 방법으로 연결을 감지 할 수 있습니다), 당신은'ClientExecute()'를 종료해야합니다. 'ClientExecute()'의 내부에서하는 일은 당신 자신의 사업입니다. –
나는 당신의 질문에 대답했다고 생각했다. 만약 당신이'ClientExecute()'를 오버라이드한다면 당신은 읽기와 쓰기를 포함하는 그 연결과 관련된 모든 것을 책임질 것이다. –
- 1. AngularJS가 완료되면 어떤 이벤트가 발생합니까?
- 2. QTextEdit의 내용이 변경되면 어떤 이벤트가 발생합니까?
- 3. iOS : 키보드가 나타날 때 어떤 이벤트가 발생합니까?
- 4. C# - 폼을로드 한 직후에 어떤 이벤트가 발생합니까?
- 5. 사용자가 누를 때 어떤 이벤트가 발생합니까?
- 6. iPad 스크롤 - 스크롤하는 동안 어떤 이벤트가 발생합니까?
- 7. 양식을 숨기면 어떤 Windows 이벤트가 발생합니까?
- 8. Codefluent에서 .Load 후 어떤 이벤트가 발생합니까?
- 9. datepicker를 숨길 때 어떤 datepicker 이벤트가 발생합니까?
- 10. UltraTabPageControl 창이 닫힐 때 어떤 이벤트가 발생합니까
- 11. Android : 화면 키보드가 나타나면 어떤 이벤트가 발생합니까?
- 12. vb.net 폼에 포커스가 없어지면 어떤 이벤트가 발생합니까?
- 13. Google지도에 그려진 서클을 이동하면 어떤 이벤트가 발생합니까?
- 14. jQuery.post : 이벤트가 발생합니까?
- 15. 목록보기에서 OnClick 이벤트가 발생합니까?
- 16. 가장자리에서만 FocusPanel 이벤트가 발생합니까?
- 17. 모든 브라우저에서 OnResize 이벤트가 발생합니까?
- 18. 실버 라이트에서 텍스트 상자가 포커스를 잃었을 때 어떤 이벤트가 발생합니까?
- 19. 문서에서 요소를 추가하거나 제거 할 때 어떤 이벤트가 발생합니까?
- 20. 별표 AMI. 통화가 시작될 때 어떤 이벤트가 발생합니까?
- 21. Excel VBA 코드 실행이 너무 일찍 종료되면 어떤 이벤트가 발생합니까?
- 22. iOS에서 창을 다시 열 때 어떤 이벤트가 발생합니까?
- 23. Dojo : 페이지/창이 포커스를 잃을 때 어떤 이벤트가 발생합니까?
- 24. ASP.NET에서 페이지가 클라이언트 브라우저에로드 될 때 어떤 이벤트가 발생합니까?
- 25. 플레이어가 Kinect에 의해 화음으로 감지되지 않을 때 어떤 이벤트가 발생합니까?
- 26. .Net Sockets Keep Alive가 승인을받지 못하면 어떤 이벤트가 발생합니까?
- 27. 처음 컨트롤을 표시 한 직후에 어떤 이벤트가 발생합니까?
- 28. 모든 항목을로드하고 ListView에 표시 한 후 어떤 이벤트가 발생합니까?
- 29. errorProvider.SetIconAlignment를 사용할 때 대상 컨트롤에 어떤 종류의 이벤트가 발생합니까
- 30. 폼을 숨긴 후 폼을 다시로드하는 동안 어떤 이벤트가 발생합니까?
원격으로는 전문가가 아니지만 동기 소켓에 대해 어떤 이벤트도 발생하지 않을 것으로 예상됩니다. –
@David, 나,하지만 이벤트는 ['OnClientRead'] (http://docwiki.embarcadero.com/Libraries/XE2/en/System.Win.ScktComp.TCustomServerSocket.OnClientRead)와 같은 이벤트가 발생해야합니다. 서버 쪽에서는 클라이언트로부터 아무 것도 읽을 수 없게됩니다. – TLama
@TLama 설명서를 읽지 않는 방식입니다. 읽는 동안 블로킹 소켓은 이러한 이벤트를 사용하지 않고 대신'TWinSocketStream'을 사용합니다. –