clientsocket的连接方式设置为阻塞方式,怎么收发数据呢?
能否给个简单的例子!非常感谢!

解决方案 »

  1.   

    unit Unitclient;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ScktComp;type
      TMyThread =Class(Tthread)
      Protected
         Procedure FillEdit;
         Procedure Execute; override;
      private
         ls_fillStr :string;
      end;  TForm1 = class(TForm)
        ClientSocket1: TClientSocket;
        Memo1: TMemo;
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       ClientSocket1.Socket.SendText('hello,i am 192.168.0.73');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
       ClientSocket1.Active :=true;
    end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
       ShowMessage('·þÎñÆ÷Á¬½Ó³É¹¦');
       TMyThread.Create(false);
    end;{ TMyThread }procedure TMyThread.Execute;
    var
       theStream :TWinSocketStream;
       buf :array [0..99] of char;
    begin
       TheStream :=TWinSocketStream.Create(Form1.ClientSocket1.Socket,6000);
       try
          while (Not Terminated) and (Form1.ClientSocket1.Active) do
          begin
             FillChar(buf,100,0);
             if theStream.Read(buf,100) <>0 then;
             begin
                ls_fillStr :=buf;
                synchronize(FillEdit);
             end;      end;
       finally
          theStream.Free;
       end;end;procedure TMyThread.FillEdit;
    begin
       Form1.Memo1.Lines.Add(ls_fillStr);
    end;end.