有没有delphi网络传输文件的例子 谁有delphi网络传输文件的例子或这方面的资料也行,多线程的也可以上,要实现的功能是,公司在各地有分公司,想让软件定时将公司的某个文件夹下面的文件传送到总公司的服务器上,分公司那边有可能是局域网总公司那边有固定的外网IP应该怎么实现呀?可以开端口和防火墙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这只是个例子 你可以参考一下unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls;type TCon = record FileName : String; TotalSize : Integer; Status : Integer; end; PCON = ^TCON; TForm1 = class(TForm) SS: TServerSocket; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure SSClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure SSClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin SS.Port := 9000; SS.Active := True;end;procedure TForm1.SSClientConnect(Sender: TObject; Socket: TCustomWinSocket);var c : pcon;begin c :=new(pcon); c.FileName := ''; c.TotalSize := 0 ; c.Status := 0; Socket.Data := c; Socket.SendText('已经连接,请输入UPLOAD FILENAME SIZE'#13#10);end;procedure TForm1.SSClientRead(Sender: TObject; Socket: TCustomWinSocket);var C : PCON; cmd:String; Buffer : pointer; nRetr : integer; fs : TFileStream;const bufferSize = 1024 ;begin C:= Socket.Data ; case c.Status of 0 : begin cmd := trim(Socket.ReceiveText) ; if Pos('UPLOAD ',uppercase(cmd)) > 0 then begin c.FileName := trim(Copy(cmd,Pos(' ',cmd)+1,Length(cmd))); c.TotalSize := StrToInt(Copy(c.FileName,Pos(' ',c.FileName)+1,Length(c.FileName))); c.FileName := trim(Copy(c.FileName,1,Pos(' ',c.FileName))); c.Status := 1; Socket.Data := C; Socket.SendText('you can send File !'#13#10); end; end; 1 : begin GetMem(Buffer,BufferSize); nRetr := Socket.ReceiveBuf(Buffer^,BufferSize); if not FIleExists('c:\'+c.FileName) then begin fs :=TFileStream.Create('c:\'+c.FileName,fmCreate or fmShareDenyNone); fs.Seek(0,soFromBeginning); end else begin fs :=TFileStream.Create('c:\'+c.FileName,fmOpenWrite or fmShareDenyNone); fs.Seek(0,soFromEnd); end; fs.WriteBuffer(Buffer^,nRetr); fs.Destroy; FreeMem(Buffer); end; end;end;procedure TForm1.Button2Click(Sender: TObject);begin Form2.Show;end;end. --------------------------------------------------------------------------------来自:唐晓锋 时间:99-11-30 01:17:19 ID:162654 unit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp;type TForm2 = class(TForm) CS: TClientSocket; OpenDialog1: TOpenDialog; Memo1: TMemo; Button1: TButton; Edit1: TEdit; Button2: TButton; SendCommand: TButton; Label1: TLabel; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure SendCommandClick(Sender: TObject); procedure Button3Click(Sender: TObject); procedure CSRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end;var Form2: TForm2;implementation{$R *.DFM}function GetFileSize(const FileName: string):integer;var f : TFileStream;begin f := TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone); Result :=f.Size; F.Free;end;procedure TForm2.Button1Click(Sender: TObject);begin with OpenDialog1 do begin Execute; if FileName <> '' then begin Edit1.Text := 'UPLOAD '+ ExtractFileName(FileName) +' '+Inttostr(GetFileSize(FileName)); Label1.Caption := FileName; cs.Socket.SendText(edit1.Text); end; end;end;procedure TForm2.Button2Click(Sender: TObject);begin CS.Active := True;end;procedure TForm2.SendCommandClick(Sender: TObject);var fs : TFileStream; Buf : pointer;begin //CS.Socket.SendText(Edit1.Text+#13#10); //Memo1.Lines.Add(); fs := TFileStream.Create(Label1.Caption ,fmOpenRead or fmShareDenyNone); GetMem(Buf,fs.Size); fs.Seek(0,soFromBeginning); fs.ReadBuffer(Buf^,fs.Size); memo1.Lines.Add('has send : '+inttostr(Cs.Socket.SendBuf(Buf^,fs.Size)));end;procedure TForm2.Button3Click(Sender: TObject);begin cs.Close;end;procedure TForm2.CSRead(Sender: TObject; Socket: TCustomWinSocket);begin Memo1.Lines.add(socket.receiveText);end;end. 找字符串问题这样做噶有必要(在数据库中找快还是TStringList快) 有关DBGrid1的问题? 悼念伟大艺人——张国荣! 过年了,我也来庆祝一下,散分 求救!一个简单的问题很长时间没有得到解决!! delphi6.0 + sql server 2000 问题在线等待 DLL传TQuery参数报错,怎么解决? 查询,修改 ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!! 求源代码 c++语句转delphi~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 使用过kbmMemTable的朋友请进!
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls;type
TCon = record
FileName : String;
TotalSize : Integer;
Status : Integer;
end; PCON = ^TCON; TForm1 = class(TForm)
SS: TServerSocket;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure SSClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
begin
SS.Port := 9000;
SS.Active := True;
end;procedure TForm1.SSClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var c : pcon;
begin c :=new(pcon);
c.FileName := '';
c.TotalSize := 0 ;
c.Status := 0;
Socket.Data := c;
Socket.SendText('已经连接,请输入UPLOAD FILENAME SIZE'#13#10);end;procedure TForm1.SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
var C : PCON;
cmd:String;
Buffer : pointer;
nRetr : integer;
fs : TFileStream;
const bufferSize = 1024 ;begin
C:= Socket.Data ;
case c.Status of
0 :
begin
cmd := trim(Socket.ReceiveText) ; if Pos('UPLOAD ',uppercase(cmd)) > 0 then
begin
c.FileName := trim(Copy(cmd,Pos(' ',cmd)+1,Length(cmd)));
c.TotalSize := StrToInt(Copy(c.FileName,Pos(' ',c.FileName)+1,Length(c.FileName)));
c.FileName := trim(Copy(c.FileName,1,Pos(' ',c.FileName)));
c.Status := 1;
Socket.Data := C;
Socket.SendText('you can send File !'#13#10);
end;
end;
1 : begin
GetMem(Buffer,BufferSize);
nRetr := Socket.ReceiveBuf(Buffer^,BufferSize); if not FIleExists('c:\'+c.FileName) then
begin
fs :=TFileStream.Create('c:\'+c.FileName,fmCreate or fmShareDenyNone);
fs.Seek(0,soFromBeginning);
end
else
begin
fs :=TFileStream.Create('c:\'+c.FileName,fmOpenWrite or fmShareDenyNone);
fs.Seek(0,soFromEnd);
end; fs.WriteBuffer(Buffer^,nRetr); fs.Destroy;
FreeMem(Buffer);
end;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
end;end.
--------------------------------------------------------------------------------
来自:唐晓锋 时间:99-11-30 01:17:19 ID:162654
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp;type
TForm2 = class(TForm)
CS: TClientSocket;
OpenDialog1: TOpenDialog;
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
SendCommand: TButton;
Label1: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SendCommandClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure CSRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.DFM}
function GetFileSize(const FileName: string):integer;
var f : TFileStream;
begin
f := TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone);
Result :=f.Size;
F.Free;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
with OpenDialog1 do
begin
Execute;
if FileName <> '' then
begin
Edit1.Text := 'UPLOAD '+ ExtractFileName(FileName) +' '+Inttostr(GetFileSize(FileName));
Label1.Caption := FileName;
cs.Socket.SendText(edit1.Text);
end;
end;
end;procedure TForm2.Button2Click(Sender: TObject);
begin
CS.Active := True;end;procedure TForm2.SendCommandClick(Sender: TObject);
var fs : TFileStream;
Buf : pointer;begin
//CS.Socket.SendText(Edit1.Text+#13#10);
//Memo1.Lines.Add();
fs := TFileStream.Create(Label1.Caption ,fmOpenRead or fmShareDenyNone); GetMem(Buf,fs.Size);
fs.Seek(0,soFromBeginning); fs.ReadBuffer(Buf^,fs.Size); memo1.Lines.Add('has send : '+inttostr(Cs.Socket.SendBuf(Buf^,fs.Size)));end;procedure TForm2.Button3Click(Sender: TObject);
begin
cs.Close;
end;procedure TForm2.CSRead(Sender: TObject; Socket: TCustomWinSocket);
begin Memo1.Lines.add(socket.receiveText);end;end.