TClientSocket在阻塞模式下会触发除OnReadand之外的所有事件OnWrite。此外,该OnDisconnect事件不会在远程断开连接时触发,只有在客户端关闭自己的套接字端时才会触发。读取/写入数据以检测这些套接字状态是代码的责任。通过TWinSocketStream.WaitForRead()或 WinSockselect()函数检测可读性。仅通过 WinSockselect()函数检测可写性。远程断开是通过第一检测和可读性-然后,检测TCustomWinSocket.ReceiveBuf()或TWinSocketStream.Read()返回0。
TServerSocket默认情况下,在阻塞模式下会触发其所有事件。但是,如果您从中派生出一个TServerClientThread覆盖虚ClientExecute()方法的类OnGetThread,然后从事件中返回该类的实例,那么您将丢失OnRead和OnWrite事件,并且必须使用与TClientSocket阻塞模式类似的逻辑来检测这些套接字状态。
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |