我的代码是这样的
    with ClientSocket1 do
    begin
      Host:= '192.168.0.253';
      Active:= True;
      Socket.Lock;
      Socket.SendText(rvStr);//这里为什么发不出去?
    end;有没有方法能让它在连接上后就发送消息
还有1个ClientSocket能不能同时连接多个ServerSocket?如果想要1个ClientSocket向多个ServerSocket发送消息应该怎么做?

解决方案 »

  1.   

    还有open,和Active:= True, Sock.lock哪个才是连接
      

  2.   

    只要Active:=true就连接了不用LOCK
      

  3.   

    ClientSocket 什么类型的还有1个ClientSocket能不能同时连接多个ServerSocket?如果想要1个ClientSocket向多个ServerSocket发送消息应该怎么做?应该是不能的。
      

  4.   

    哦,那为什么接下来的SendText会发不出去呢,我在Server端收不到,我想在连接的时候就发送一条指令,所以在Active:= True后就直接Sendtext了,如果把Sendtext单独写出来server端又能正常接收了是不是Active:= True后需要一点时间来连接,这个时候发送就接收不到?
      

  5.   

    你把sendtext 放到ClientSocket 的onconnect 时间中就可
      

  6.   

    你把sendtext 放到ClientSocket 的onconnect 事件中就可以了
      

  7.   

    回复人: zl54(闷头干活) ( ) 信誉:100 
    你说的方法我知道,这样又会出现另一个问题,在server端的接收在ACCEPT事件和ONclientRead事件中会有冲突,有时候在Accept事件中接收到有时候却又在OnClientRead事件中接收到,真被搞糊涂了
      

  8.   

    我觉得只需要处理Accept事件就可以了啊
      

  9.   

    因为楼主用的非阻塞方式啊,
    Active:=true 其实是调用SetActive方法..可以这样等待..
    ClientSocket1.Active:=true;
    while no ClientSocket1.Active do
    begin
      application.ProcessMessages;
    end;ClientSocket1.SendText....
      

  10.   

    有谁知道socket发生的事件的先后顺序?