delphi 动态创建TClientSocket后,
ClientSocket:= TClientSocket.Create(nil);
ClientSocket.OnRead := MySocketRead;
procedure MySocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
这里为什么收不到信息啊??
end;
连接也是正常的,server端也发送数据了,客户端这就是什么信息也没收到。
怎么能将我定义的事件与Clientsocket绑定在一起呢???

解决方案 »

  1.   

    unit MainFormUnit;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ScktComp;type
      TMainForm = class(TForm)
        mmoLog: TMemo;
        btnRequest: TButton;
        edtUrl: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure btnRequestClick(Sender: TObject);
      private
        FClient: TClientSocket;
        procedure OnRead(Sender: TObject; Socket: TCustomWinSocket);
        procedure OnConnect(Sender: TObject; Socket: TCustomWinSocket);
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;implementation{$R *.dfm}procedure TMainForm.FormCreate(Sender: TObject);
    begin
      FClient := TClientSocket.Create(nil);
      FClient.OnRead := OnRead;
      FClient.OnConnect := OnConnect;
    end;procedure TMainForm.FormDestroy(Sender: TObject);
    begin
      FClient.Free;
    end;procedure TMainForm.OnRead(Sender: TObject; Socket: TCustomWinSocket);
    begin
      mmoLog.Lines.Add(Socket.ReceiveText);
    end;procedure TMainForm.btnRequestClick(Sender: TObject);
    begin
      FClient.Host := edtUrl.Text;
      FClient.Port := 80;
      FClient.Open;
    end;procedure TMainForm.OnConnect(Sender: TObject; Socket: TCustomWinSocket);
    begin
      Socket.SendText('GET / HTTP/1.1'#13#10'Host: ' + edtUrl.Text + #13#10#13#10);
    end;end.
    写了个例子,自己看下吧。
      

  2.   

    To pathletboy, 
      

  3.   


    这个是EXE执行的。。如果动态执行。你就要构建 TObject 。不然在DLL中是不会响应的。也就是不会执行