Delphi ScktComp:何时触发onWrite事件?
当我通过SendBuf()将字节直接写入套接字连接时,我认为ClientSocket的onWrite事件是多余的 我的想法是在沙漠的某个地方吗?Delphi ScktComp:何时触发onWrite事件?,delphi,sockets,Delphi,Sockets,当我通过SendBuf()将字节直接写入套接字连接时,我认为ClientSocket的onWrite事件是多余的 我的想法是在沙漠的某个地方吗? Delphi文档也有点糟糕,因为它只是说:“为onWrite事件编写一个例程以写入套接字连接。”当您使用异步IO时(换句话说,当您使用ClientType=ctNonBlocking时),会使用onWrite。当套接字准备好让您发送数据时,就会调用它 因此,您的想法只有一半是空中楼阁:如果您使用的是ctBlocking,那么就根本不用担心OnWrite
Delphi文档也有点糟糕,因为它只是说:“为onWrite事件编写一个例程以写入套接字连接。”当您使用异步IO时(换句话说,当您使用ClientType=ctNonBlocking时),会使用onWrite。当套接字准备好让您发送数据时,就会调用它 因此,您的想法只有一半是空中楼阁:如果您使用的是ctBlocking,那么就根本不用担心OnWrite了。如果您需要该线程同时发送数据和处理其他内容,那么使用ctNonBlocking并在OnWrite中写入套接字 当您使用异步套接字时,Windows将向您的套接字发送一条CM_SOCKETMESSAGE,由TCustomWinSocket.CMSocketMessage处理。当该消息的SelectEvent属性设置为FD_WRITE时,将(最终)调用OnWrite 这里的神奇成分是在TCustomWinSocket.DoSetAsyncStyles中调用