sendtxt?
sendbuf?
sendstream?
sendbuf?
sendstream?
解决方案 »
- 写法问题
- 多个ie进程时弹出的ie窗口如何使其在最前面??急!!
- 求为软件加入注册码的代码?且一个注册码只能在一部机上使用?
- 求教有关QuickReport的问题
- sql server 和 oracle 比较!
- 请问一个SQL SERVER导出数据库的问题。
- [microsoft][odbc sql server driver]没有执行可选特性
- 如何实现用BETWEEN AND查询日期型的关键字段
- 急急急!请教RAVE制作报表的走纸精度问题
- 打包程序安装过程中出现“Modifying of .cfg failed:5”的错误!
- 哪里有<delphi 5开发人员指南>的源代码下载??
- 关于应用程序(Delphi 3 编写)运行时出现的两个异常(请大虾们帮忙 SOS!!!)
接收端如何做呢?我是个新手,还望指教。
客户端就用receivebuf就行了
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, Buttons, StdCtrls;type
TFilePack=packed record
flag:char;
data:array [0..2042] of byte;
size:integer;
end;
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Memo1: TMemo;
procedure senddata;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.senddata;
var
ms:TMemoryStream;
packet:TFilePack;
isendlen,i,Position,len:integer;begin
ms:=TmemoryStream.Create;
ms.LoadFromFile('D:\Project1.exe');
len:=ms.Size-ms.Position;
while len>0 do
begin
fillchar(Packet,Sizeof(TFilepack),0); if len>2043 then
begin
packet.size:= 2044;
packet.flag:='d';
end
else begin
packet.size:=len;
packet.flag:='e';
end; ms.Read(packet.data,packet.size);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
isendlen:=serversocket1.Socket.Connections[i].SendBuf(packet,sizeof(TFilePack));
memo1.Lines.Add(inttostr(isendlen));
len:=ms.Size-ms.Position;
end;
end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
senddata;
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
serversocket1.Active:=true;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ScktComp, StdCtrls, Db, ADODB;type
TFilePack=packed record
flag:char;
data:array [0..2042] of byte;
size:integer;
end;
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Memo1: TMemo;
SpeedButton3: TSpeedButton;
ADODataSet1: TADODataSet;
procedure FormCreate(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure SpeedButton3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
var
ms:Tmemorystream;{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Active:=true;
ms:=Tmemorystream.Create;
end;procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
buf:array [0..1024000] of byte;
packet:Tfilepack;
PacketLen ,i,ReceiveLen:integer;
begin PacketLen := SizeOf(TFilepack);
ReceiveLen := Socket.ReceiveLength;
memo1.Lines.Add(inttostr(ReceiveLen));
if (ReceiveLen mod PacketLen) <> 0 then
Exit;
Socket.ReceiveBuf(Buf, ReceiveLen);
for i := 0 to ReceiveLen div SizeOf(TFilepack) - 1 do
begin
Move(Buf, packet, PacketLen);
// memo1.Lines.Add('rec '+inttostr(Socket.SocketHandle));
case packet.flag of
'd': ms.Write(packet.data,packet.size);
'e': begin
ms.Write(packet,packet.size);
ms.SaveToFile('e:\11.exe');
// ms.SetSize(0);
end;
else
;
end;
//socket.SendBuf(sendtxt,sizeof(TsendTxt));
Move(Buf[PacketLen], Buf, ReceiveLen - (i + 1) * PacketLen);
end;end;procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
ms.SaveToFile('e:\122.exe');
adodataset1.State
end;end.
CopyFile('\\计算机名\共享目录名\子目录\..., ...)反而比NmStrm快
sendbuf
sendstream
到底有什么区别?
用NmStrm和NMStrmServ 发送比较大的文件就会出错