我要socket发网路消息
下面是两个按纽的代码  是客户端是可以收到包的
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Active := false;
  if not ClientSocket1.Active then
  begin
    ClientSocket1.Address := Edit1.Text; {远程IP地址}
    ClientSocket1.Port := 3000; {Socket端口}
    ClientSocket1.Open; {建立连接}
  end;end;procedure TForm1.Button2Click(Sender: TObject);
begin  Clientsocket1.Socket.SendText('@07Lock'); {发送指令通知服务端抓取屏幕图象}end;但是我把他写在一起  客户端就收不到包了
我后来跟踪了一下 是连接没成功
请问要想将代码一起执行  怎么修改

解决方案 »

  1.   

    要在它的OnConnect事件中写:
    procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Clientsocket1.Socket.SendText('@07Lock'); {发送指令通知服务端抓取屏幕图象}
    end;
      

  2.   

    因为运行到
     ClientSocket1.Open; {建立连接}时,ClientSocket1并没有马上连通,所以你发送指令是没有用的
      

  3.   

    那你就声明一个全局变量,记录当前需要进行什么操作,如
    var 
      ...
      ProcessID:integer;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientSocket1.Active := false;
      if not ClientSocket1.Active then
      begin
        ProcessID:=2;//{发送指令通知服务端抓取屏幕图象}
        ClientSocket1.Address := Edit1.Text; {远程IP地址}
        ClientSocket1.Port := 3000; {Socket端口}
        ClientSocket1.Open; {建立连接}
      end;end;
    procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      case ProcessID of
      1:
        begin
        //启动
        end;
      2:
        Clientsocket1.Socket.SendText('@07Lock'); {发送指令通知服务端抓取屏幕图象}
      end;
    end;