procedure TfrmMain.btnSendFileClick(Sender: TObject);
var
Size: Integer;
Buffer: PChar;
StrLength: integer;
begin
if Self.OpenDialog.Execute then
begin
FStream.LoadFromFile(OpenDialog.FileName);
FStream.Position := 0;
Size := FStream.Size;
strlength:=Length(OpenDialog.FileName);
Inc(Size, strlength+5);
GetMem(Buffer, Size + 1);
FStream.Read(Buffer[strlength+4], Size - 5);
Buffer[0] := 'f';
Buffer[1] := 'i';
Buffer[2] := 'l';
Buffer[3] := 'e';
strpcopy(buffer[4],opendialog.FileName);
Buffer[Size - 1] := 'E';
Buffer[Size] := #0;
if ssServer.Socket.ActiveConnections > 0 then
begin
ssServer.Socket.Connections[0].SendBuf(Buffer^, Size);
end;
FreeMem(Buffer);
end;
end;
我想用socket发送文件,buffer中前4位存的是"file",后面紧接着存入文件名称,然后在存文件内容.以上是我写的一段代码.但是有问题,文件名称不知如何存储.请各位高手帮忙.
var
Size: Integer;
Buffer: PChar;
StrLength: integer;
begin
if Self.OpenDialog.Execute then
begin
FStream.LoadFromFile(OpenDialog.FileName);
FStream.Position := 0;
Size := FStream.Size;
strlength:=Length(OpenDialog.FileName);
Inc(Size, strlength+5);
GetMem(Buffer, Size + 1);
FStream.Read(Buffer[strlength+4], Size - 5);
Buffer[0] := 'f';
Buffer[1] := 'i';
Buffer[2] := 'l';
Buffer[3] := 'e';
strpcopy(buffer[4],opendialog.FileName);
Buffer[Size - 1] := 'E';
Buffer[Size] := #0;
if ssServer.Socket.ActiveConnections > 0 then
begin
ssServer.Socket.Connections[0].SendBuf(Buffer^, Size);
end;
FreeMem(Buffer);
end;
end;
我想用socket发送文件,buffer中前4位存的是"file",后面紧接着存入文件名称,然后在存文件内容.以上是我写的一段代码.但是有问题,文件名称不知如何存储.请各位高手帮忙.
var
Size: Integer;
Buffer: PChar;
StrLength: integer;
strFileName: string;
FS: TFileStream;
begin
if Self.OpenDialog.Execute then
begin
FStream := TMemoryStream.Create;
//先存 "file"
strFileName = 'file';
FStream.Write(strFileName[1], Length(strFileName));
//再存文件名
strFileName := OpenDialog.FileName;
FStream.Write(strFileName[1], Length(strFileName));
//再存文件内容
FS := TFileStream.Create(strFileName, ....(mode自己去查吧,忘了)...);
FStream.CopyFrom(FS, FS.Size); //.........end;
FStream.Read(buf, FStream.Size);然后再发送
CopyMemory(@Buf[4], @strFileName[1], Length(strFileName)); //好象可以这样吧