各位老大,我以苦闷,我实在找不出哪里错了。救命呀。
SERVER
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
OpenDialog1: TOpenDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
liu:tfilestream;
q:integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var kk:string;
begin
if opendialog1.Execute then
begin
kk:=extractfilename(opendialog1.FileName);
liu:=tfilestream.Create(opendialog1.FileName,fmopenread);
q:=liu.Size;
serversocket1.Socket.Connections[0].SendText('m'+kk);
end;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var jssj:string;
buf:array[0..8000] of byte;
begin
jssj:=socket.ReceiveText;
if jssj='0' then
begin
serversocket1.Socket.Connections[0].SendText('zbok'+inttostr(q));
end;
if jssj='go' then
begin
if q>8000 then
begin
liu.Read(buf,8000);
serversocket1.Socket.Connections[0].SendBuf(buf,8000);
q:=q-8000;
end
else
liu.Read(buf,q);
serversocket1.Socket.Connections[0].SendBuf(buf,q);
end;
if jssj='isend' then
begin
liu.Free;
end;
end;end.
CLIENT
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
jssj,mingzi:string;
liu:tfilestream;
q:integer;
buf:array[0..8000] of byte;
begin
jssj:=socket.ReceiveText;
if copy(jssj,1,length(jssj)-1)='m' then
begin
mingzi:=copy(jssj,2,length(jssj)-1);
socket.SendText('0');
end;
if copy(jssj,1,length(jssj)-1)='zbok' then
begin
liu:=tfilestream.Create('c:\'+mingzi,fmcreate);
q:=strtoint(copy(jssj,2,length(jssj)-1));
socket.SendText('go');
end
else
begin
if q>8000 then
begin
socket.ReceiveBuf(buf,8000);
liu.Write(buf,8000);
q:=q-8000;
socket.SendText('go');
end
else
begin
socket.ReceiveBuf(buf,q);
liu.Write(buf,q);
socket.SendText('isend');
liu.Free;
end;
end;
end;
SERVER
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
OpenDialog1: TOpenDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
liu:tfilestream;
q:integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var kk:string;
begin
if opendialog1.Execute then
begin
kk:=extractfilename(opendialog1.FileName);
liu:=tfilestream.Create(opendialog1.FileName,fmopenread);
q:=liu.Size;
serversocket1.Socket.Connections[0].SendText('m'+kk);
end;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var jssj:string;
buf:array[0..8000] of byte;
begin
jssj:=socket.ReceiveText;
if jssj='0' then
begin
serversocket1.Socket.Connections[0].SendText('zbok'+inttostr(q));
end;
if jssj='go' then
begin
if q>8000 then
begin
liu.Read(buf,8000);
serversocket1.Socket.Connections[0].SendBuf(buf,8000);
q:=q-8000;
end
else
liu.Read(buf,q);
serversocket1.Socket.Connections[0].SendBuf(buf,q);
end;
if jssj='isend' then
begin
liu.Free;
end;
end;end.
CLIENT
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
jssj,mingzi:string;
liu:tfilestream;
q:integer;
buf:array[0..8000] of byte;
begin
jssj:=socket.ReceiveText;
if copy(jssj,1,length(jssj)-1)='m' then
begin
mingzi:=copy(jssj,2,length(jssj)-1);
socket.SendText('0');
end;
if copy(jssj,1,length(jssj)-1)='zbok' then
begin
liu:=tfilestream.Create('c:\'+mingzi,fmcreate);
q:=strtoint(copy(jssj,2,length(jssj)-1));
socket.SendText('go');
end
else
begin
if q>8000 then
begin
socket.ReceiveBuf(buf,8000);
liu.Write(buf,8000);
q:=q-8000;
socket.SendText('go');
end
else
begin
socket.ReceiveBuf(buf,q);
liu.Write(buf,q);
socket.SendText('isend');
liu.Free;
end;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货