我现在遇到了ClientSocket的一个问题,我想在ClientSocket连接上之后就随即发送一个命令,但是不知道把这个发送命令写到哪儿地方,怎样来实现。我发送后对方老是收不到,怎么回事。
下面是我的代码:
begin
    str1:='192.168.1.252';
    if trim(str1)<>'' then
    begin
     ClientSocket1.Close;
     ClientSocket1.Host:= str1;
     clientsocket1.Port:=12;//server port
     ClientSocket1.ClientType := ctNonBlocking;
    try
       clientsocket1.open;
       clientsocket1.Socket.SendText('命令数据');
    except
    end;
end;
但是clientsocket1.Socket.SendText('命令数据');这个数据对方总是收不到,如果将这个发送数据写到其他按钮事件里面对方就能收到数据,这种情况怎样来解决呀。
我现在就是想在Socket连接上之后,就立即发送一个数据。高手帮忙找一个办法吧。谢谢了!!!

解决方案 »

  1.   

    clientsocket1.Socket.SendText('命令数据');
    把上面这句放在OnConnect事件中写。
      

  2.   

    clientsocket1是什么控件,我什么都找不到他
      

  3.   

    zzllabc(抱朴子--清心释累,绝率忘情);
    你好!我按照你说的将clientsocket1.Socket.SendText('命令数据');
    这句放到OnConnect事件中时,对方也是收不到的,怎么回事呀?你这样用过吗?你最好自己再试试,我刚试过的。谢谢你请尽快回复!!
      

  4.   

    实在不行,试一下:
           clientsocket1.open;
           sleep(500);//如果还不行,加大一下参数值
           clientsocket1.Socket.SendText('命令数据');
      

  5.   

    zzllabc(抱朴子--清心释累,绝率忘情);
    你的这种方法
           clientsocket1.open;
           sleep(500);//如果还不行,加大一下参数值
           clientsocket1.Socket.SendText('命令数据');
    我已经试过了还是不行,不知道该怎么办呀?帮忙呀!
      

  6.   

    老兄,你把ClientSocket1.Host:= str1;代码变成:ClientSocket1.Address:= str1;试试。看行不行。
      

  7.   

    嘿嘿.明显是wangmaohuo(汪逸)说的那样.
      

  8.   

    wangmaohuo(汪逸) 说对一半clientsocket1.ope; 
    while no clientsocket1.socket.connected do Application.processmessages;//等待连接
    clientsocket1.Socket.SendText('命令数据');
    这方法肯定成功,本人用socket做过dll.To halfdream(哈欠):
    怎么你没把问题说完整?教师节快乐!呵呵
      

  9.   

    更正clientsocket.ope; ==>clientsocket.open;
      

  10.   

    ClientType 改成 阻塞模式即可
      

  11.   

    把clientSocket设为非阻塞式,在打开的时后一定要写
    clientSocket.close;
    ClientSocket.open;
    再在ClientSocket的onconnect事件中写
    socket.SendText(数据);
    这是一定能成功的,我试过很多次都成功了
      

  12.   

    为什么不在onconnect事件里写,例子里有阿
      

  13.   

    var
      result:string;
    begin
      ClientSocket1:= TClientSocket.Create(nil);
      ClientSocket1.Host:='128.8.75.65';
      ClientSocket1.Port:=1024;
      ClientSocket1.Open;
      while not clientsocket1.socket.connected do
        Application.processmessages;//等待连接  
      ClientSocket1.Socket.SendText('88480666');
     // sleep(1000);
      label1.Caption:=ClientSocket1.Socket.ReceiveText;
      while trim(label1.Caption)='' do  //没有收到消息,则延时再收
        label1.Caption:=ClientSocket1.Socket.ReceiveText;
      ClientSocket1.Close;
      FreeAndNil(ClientSocket1);
    这样的话又能发又能收!!
      

  14.   

    host是服务器名称,用IP用Addressbegin
        str1:='192.168.1.252';
        if trim(str1)<>'' then
        begin
         ClientSocket1.Close;
         ClientSocket1.Address:= str1;
         clientsocket1.Port:=12;//server port
         ClientSocket1.ClientType := ctNonBlocking;
        try
           clientsocket1.open;
           clientsocket1.Socket.SendText('命令数据');
        except
        end;
    end;