非阻塞模式的TCP客户端是否有办法和阻塞模式的TCP服务器通讯?
我自己试了试,好像不行。不知道是不是真的不行还是我不知道方法。

解决方案 »

  1.   

    zwjchina(蒲石)
      例如我用indy的TIdTCPServer做服务器,
      用Internet里的TCPClient做客户端,同时把TCPClient的BlockMode改成bmNonBlocking,那么客户端和服务器无法通讯。(客户端连接时,服务器发现有连接,但是客户端显示连接失败)。
      如果把TCPClient的BlockMode改成bmBlocking,那么通讯就没有问题了。另 china618(知秋半叶) 关于阻塞和非阻塞,这个论坛里面有很多相关的讨论。可以搜索一下。
      

  2.   

    Indy我不清楚,但是非阻塞的概念在Windows下才有,也就使用Windows在socket api中封装了如
    Send这种标准的阻塞方式所对应的异步方式,Linux下都是直接使用那些标准的阻塞过程,因此
    Linux系统的TCP服务器(如标准的Http服务器)是不会区分连接其服务器的系统(如果是Windows)是使用阻塞还是非阻塞方式。
      

  3.   

    的确是我的问题,事实上如zwjchina(蒲石) 所说,阻塞的服务器完全可以和非阻塞的客户端通讯。
    结贴,给分,谢谢。