var
Receiving: Boolean; //是否在接收文件
Buff: Point;
RealCount: Integer; //当前发送位置
Const
DataSize = 4096;//每次发送的字节数
发送的代码
IF Socket.ReceiveText = 'Ready To Receive Next' then
begin
GetMem(Buff,DataSize);
RealCount := SendFileStream.Read(Buff^,DataSize);
ClientSocket_SendFile.Socket.Sendbuf(Buff^,RealCount);
end;接收代码
IF Not Receiving then
ReceiveFileStream := TFileStream.Create('C:\'+ReceiveFileName,fmCreate and fmOpenWrite); Receiving := True;
Getmem(Buff,DataSize);
RealCount := Socket.ReceiveBuf(Buff^,DataSize);
ReceiveFileStream.WriteBuffer(Buff^,RealCount);
FreeMem(Buff);
ServerSocket_SendFile.Socket.Connections[0].SendText('Ready To Receive Next');运行时出现这样问题:在接收到第一个数据后,反馈给发送方让发送方继续发送第二个数据
可是第儿个数据发送过来后,执行 ReceiveFileStream.WriteBuffer(Buff^,RealCount);语句程序
就会出错,提示是:Access violation at address 0041B4E5 in moudle 'xxx.exe'.Read of
address B883665F.
试过好多方法就是不行,请各位赐教啊,只有10分了,请各位高台贵手
Receiving: Boolean; //是否在接收文件
Buff: Point;
RealCount: Integer; //当前发送位置
Const
DataSize = 4096;//每次发送的字节数
发送的代码
IF Socket.ReceiveText = 'Ready To Receive Next' then
begin
GetMem(Buff,DataSize);
RealCount := SendFileStream.Read(Buff^,DataSize);
ClientSocket_SendFile.Socket.Sendbuf(Buff^,RealCount);
end;接收代码
IF Not Receiving then
ReceiveFileStream := TFileStream.Create('C:\'+ReceiveFileName,fmCreate and fmOpenWrite); Receiving := True;
Getmem(Buff,DataSize);
RealCount := Socket.ReceiveBuf(Buff^,DataSize);
ReceiveFileStream.WriteBuffer(Buff^,RealCount);
FreeMem(Buff);
ServerSocket_SendFile.Socket.Connections[0].SendText('Ready To Receive Next');运行时出现这样问题:在接收到第一个数据后,反馈给发送方让发送方继续发送第二个数据
可是第儿个数据发送过来后,执行 ReceiveFileStream.WriteBuffer(Buff^,RealCount);语句程序
就会出错,提示是:Access violation at address 0041B4E5 in moudle 'xxx.exe'.Read of
address B883665F.
试过好多方法就是不行,请各位赐教啊,只有10分了,请各位高台贵手
GetMem(bufRecv,iLength);
FreeMem(Buff); //把这句去掉 var
iLength:integer;
接收代码
IF Not Receiving then
ReceiveFileStream := TFileStream.Create('C:\'+ReceiveFileName,fmCreate and fmOpenWrite); Receiving := True;
iLength:=Socket.ReceiveLength;
GetMem(bufRecv,iLength);
try
RealCount := Socket.ReceiveBuf(Buff^,iLength);
ReceiveFileStream.WriteBuffer(Buff^,iLength);
finally
FreeMem(Buff);
end;
ServerSocket_SendFile.Socket.Connections[0].SendText('Ready To Receive Next');