查询了N久资料和Delphi的帮助,亦不得其解,望各位达人赐教:ServerType 使用 stNonBlocking, 程序是这样处理的,当接收到客户端发来的数据后, 把数据转化为我定义的格式后,加入TList列表. 然后用几个线程处理.1. 如果不同步线程, 多个线程调用同一个TServerSocket的SendBuf方法会有哪些问题?2.当OnClientError事件触发时,需不需要Sokect.Close,如果不关闭发生Error的Socket连接,而仅是ErrorCode=0, 这个Socket连接还能否正常使用?

解决方案 »

  1.   

    1. 如果不同步线程, 多个线程调用同一个TServerSocket的SendBuf方法会有哪些问题?如果是多个线程,建议你将要SendBuf的数据,加到一个 TStringList 之类的列表中,
    然后,ServerSocket 检查列表,有则发送数据当然,最好还是做同步处理,我上面说的,也要2.当OnClientError事件触发时
    可能要检查是什么错误再相应处理
      

  2.   

    ServerType 使用 stNonBlocking, 程序是这样处理的,当接收到客户端发来的数据后, 把数据转化为我定义的格式后,加入TList列表. 然后用几个线程处理.
    =================================================
    在线程中,你加入VCL组件(TList)的话,就得进行相应处理。1. 如果不同步线程, 多个线程调用同一个TServerSocket的SendBuf方法会有哪些问题?
    ============================================================================
    Buffer的长度你要控制,多个线程调用的话,你必须保证你每次Buffer里面的内容被该线程接收完,才容许下一线程操作,否则,你的传输会出错。2.当OnClientError事件触发时,需不需要Sokect.Close,如果不关闭发生Error的Socket连接,而仅是ErrorCode=0, 这个Socket连接还能否正常使用?
    =========================
    用ERRORCODE=0,这个连接还可以使用,其实就是将错误信息返回正常状态。