如果把建立和连接过程放到Synchronize里去呢?

解决方案 »

  1.   

    算了,看来这里也没有传说的那么神,这个问题我自己解决了
    就是在子线程中在其一个线程来进行连接,因为根据我这些天的测试,发现因为连接Socket的
    组件实际上运行于主线程,而我操作它却是在一个子线程中,涉及到线程同步的问题,可能子线
    程中的某些资源没有释放,所以无法响应主线程某些消息,所以我决定把连接在独立出来
    一试果然成功了。呵呵
      

  2.   

    虽然你解决了问题,但不明白其中的道理啊。
    SOCKET工作方式有阻塞和非阻塞两种,DELPHI自带的SOCKET控件,默认是非阻塞模式的(NonBlocking),只能在VCL主线程下执行,函数调用后都会立即返回,正确工作依赖于消息系统,所以只能在主线程下工作。
    在线程中需要用阻塞(BLOCKING)模式才可工作,与nonblocking完全不同,编程比较麻烦,比如非阻塞下读写函数READ、WRITE等,线程模式下都不能使用,得用Twinsocketstream类来完成读写等。
    这些东西帮助里都有,你没有好好看。其实许多第三方的SOCKET控件都比自带的好用。
      

  3.   

    阻塞模式下,只能使用Twinsocketstream来完成读写操作
      

  4.   

    呵呵,这时候都跳出来说一番大道理,早干吗来着。
    其实这也是CSDN的一贯风格-->马后炮,呵呵不过还是谢谢大家
    我的分数给你们平分了,谢谢
      

  5.   

    你这种做法太粗放了,不把CSDN放在眼里,你凌晨提的问题,不到中午就说已经很久了,怎么还没有人回答?然后自己用最粗糙的办法解决了,还沾沾自喜呢!!
    不稀罕你给的分,收回去吧!!!