Z
zzutlink
Unregistered / Unconfirmed
GUEST, unregistred user!
客户端:
procedure TForm1.Button2Click(Sender: TObject);
var
fs:TFileStream;
buff:array[1..1024] of byte;
ss:TStringStream;
tempStr:string;
tempInt:Longint;
len:array[1..4] of byte;
begin
ss := TStringStream.Create('') ;
tempStr := Edit1.Text ;
fs := TFileStream.Create(tempStr,fmOpenRead) ;
tempInt := fs.Size ;
Label1.Caption := IntToStr(tempInt) ;
ss.Seek(0,0) ;
ss.WriteString(tempStr+#0) ;
len[1] := tempInt div 256 div 256 div 256 ;
len[2] := (tempInt - len[1]*256*256*256) div 256 div 256 ;
len[3] := (tempInt - len[1]*256*256*256 - len[2]*256*256) div 256 ;
len[4] := tempInt - len[1]*256*256*256 - len[2]*256*256 - len[3]*256 ;
ss.Seek(180,0) ;
ss.WriteBuffer(len,4) ; //我想将181至184用来记录文件大小
ss.Seek(0,0) ;
ss.Read(buff,SizeOf(buff)) ;
TcpClient1.RemoteHost := '198.168.166.218' ;
TcpClient1.RemotePort := '5000' ;
TcpClient1.Connect ;
TcpClient1.SendBuf(buff,SizeOf(buff)) ;
TcpClient1.Disconnect ;
fs.Free ;
ss.Free ;
end;
服务器端:
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
buff:array[1..1024] of byte;
ms:TStringStream;
tempStr:string;
tempInt:Longint;
len:array[1..4] of byte;
begin
ClientSocket.ReceiveBuf(buff,SizeOf(buff)) ;
ms := TStringStream.Create('') ;
ms.Write(buff,SizeOf(buff)) ;
ms.Seek(0,0) ;
tempStr := ms.ReadString(180) ;
ms.Seek(180,0) ; //定位到第180
Edit1.Text := tempStr ;
ms.ReadBuffer(len,4) ; //读取长度信息,但结果是错误的。
tempInt := len[1]*256*256*256 + len[2]*256*256 + len[3]*256 +len[4] ;
Label1.Caption := IntToStr(tempInt) ;
ms.Free ;
end;
请问哪儿错了?谢谢各位!
procedure TForm1.Button2Click(Sender: TObject);
var
fs:TFileStream;
buff:array[1..1024] of byte;
ss:TStringStream;
tempStr:string;
tempInt:Longint;
len:array[1..4] of byte;
begin
ss := TStringStream.Create('') ;
tempStr := Edit1.Text ;
fs := TFileStream.Create(tempStr,fmOpenRead) ;
tempInt := fs.Size ;
Label1.Caption := IntToStr(tempInt) ;
ss.Seek(0,0) ;
ss.WriteString(tempStr+#0) ;
len[1] := tempInt div 256 div 256 div 256 ;
len[2] := (tempInt - len[1]*256*256*256) div 256 div 256 ;
len[3] := (tempInt - len[1]*256*256*256 - len[2]*256*256) div 256 ;
len[4] := tempInt - len[1]*256*256*256 - len[2]*256*256 - len[3]*256 ;
ss.Seek(180,0) ;
ss.WriteBuffer(len,4) ; //我想将181至184用来记录文件大小
ss.Seek(0,0) ;
ss.Read(buff,SizeOf(buff)) ;
TcpClient1.RemoteHost := '198.168.166.218' ;
TcpClient1.RemotePort := '5000' ;
TcpClient1.Connect ;
TcpClient1.SendBuf(buff,SizeOf(buff)) ;
TcpClient1.Disconnect ;
fs.Free ;
ss.Free ;
end;
服务器端:
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
buff:array[1..1024] of byte;
ms:TStringStream;
tempStr:string;
tempInt:Longint;
len:array[1..4] of byte;
begin
ClientSocket.ReceiveBuf(buff,SizeOf(buff)) ;
ms := TStringStream.Create('') ;
ms.Write(buff,SizeOf(buff)) ;
ms.Seek(0,0) ;
tempStr := ms.ReadString(180) ;
ms.Seek(180,0) ; //定位到第180
Edit1.Text := tempStr ;
ms.ReadBuffer(len,4) ; //读取长度信息,但结果是错误的。
tempInt := len[1]*256*256*256 + len[2]*256*256 + len[3]*256 +len[4] ;
Label1.Caption := IntToStr(tempInt) ;
ms.Free ;
end;
请问哪儿错了?谢谢各位!