如题。各位可以给我一个例子吗?谢谢!

解决方案 »

  1.   

    给你个例子
    客户端向服务器端传送文件
    ======================服务器端(stThreadBlocking)===============================
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ScktComp;type
      TForm1 = class(TForm)
        ServerSocket1: TServerSocket;
        procedure ServerSocket1GetThread(Sender: TObject;
          ClientSocket: TServerClientWinSocket;
          var SocketThread: TServerClientThread);
        private
        { Private declarations }
        public
        { Public declarations }
        end;
      TClientThread = Class(TServerClientThread)
        private
        public
        procedure ClientExecute; override;
        end;
        
    var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TClientThread.ClientExecute;
    var
      ReceiveBuffer : Array[0..1023] Of Char;
      SocketStream : TWinSocketStream;
      BytesRead : Integer;
      F : TFileStream;
      FileName: string;
    begin
     while not Terminated and ClientSocket.Connected do
      Begin
       try
         SocketStream := TWinSocketStream.Create(ClientSocket, 100);
         FileName := 'C:\afile';
         if FileExists(FileName) then FileName := FileName + '0';
         F := TFileStream.Create(FileName, fmCreate);
         try
           FillChar(ReceiveBuffer, sizeof(ReceiveBuffer), 0);
            while SocketStream.WaitForData(5000) do
            begin
              BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer));
              if BytesRead = 0 then
                ClientSocket.Close
              Else
               F.WriteBuffer(ReceiveBuffer, BytesRead);
            end;
         finally
           SocketStream.Free;
           ClientSocket.Close;
           f.Free;
         end;
       except
       end;
      end;
    end;
    procedure TForm1.ServerSocket1GetThread(Sender: TObject;
      ClientSocket: TServerClientWinSocket;
      var SocketThread: TServerClientThread);
    begin
      SocketThread := TClientThread.Create(False, ClientSocket);
    end;end.==================================客户端(ctBlocking)===================================
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ScktComp;type
      TForm1 = class(TForm)
        ClientSocket1: TClientSocket;
        OpenDialog1: TOpenDialog;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      s : TWinSocketStream;
      f, f2: TFileStream;
    begin
      if not OpenDialog1.Execute then Exit;
      ClientSocket1.Open;
      s := TWinSocketStream.Create(ClientSocket1.Socket, 60000);
      f := TFileStream.Create(OpenDialog1.FileName, fmShareDenyWrite);
      try
        s.CopyFrom(f, 0);
      finally
        s.Free;
        f.Free;
        ClientSocket1.Close;
      end;
    end;end.
    ==================================================================