begin iLength:=Socket.ReceiveLength; //了解到达缓冲区的字节数 GetMem(bufRecv,iLength);//分配内存 try Socket.ReceiveBuf(bufRecv^,iLength); //接收数据包并读入缓冲区内 sTemp:=StrPas(PChar(bufRecv)); sTemp:=Copy(sTemp,1,5); if sTemp='11111' then begin sTemp:=Trim(StrPas(PChar(bufRecv))); sFileName:=ExtractFileName(Copy(sTemp,6,Length(STemp))); //在这里拒绝 SaveDialog1.Title:='保存下载文件:'; SaveDialog1.FileName:=sFileName; if SaveDialog1.Execute then begin stream:=TFileStream.Create(SaveDialog1.FileName,fmCreate); //如果愿意接收数据。 //memo1.Lines.Add ('开始接收!');//?????? TickCount:=GetTickCount; Socket.SendText('33333'); //通知发送端发送数据。 bStart:=False; end else Socket.SendText('22222'); end else if sTemp='00000' then begin //要发送StrToInt(Copy(sTemp,2,Length(sTemp))) 次 //时间进度显示 //iRecvLength:=StrToInt(Copy(sTemp,2,Length(sTemp)));//;1024 Socket.SendText('44444'); //接收文件长度并要求继续传送数据。 end else if sTemp='44444' then begin Socket.SendText('55555'); //要求发送端发送数据。 //准备好接收数据。 end else if sTemp='77777' then begin //memo1.Lines.Add ('MP_OVER');//?????? stream.Free; end else if sTemp='99999' then//文件传送结束。 begin //memo1.Lines.Add ('结束!'+IntToStr(GetTickCount-TickCount));//?????? stream.Free; end else if sTemp='66666' then begin //memo1.Lines.Add ('MP_ABORT');//?????? stream.Free; end else begin if not bStart then begin //memo1.Lines.Add('接收数据...');//?????? bStart:=True; end; stream.WriteBuffer(bufRecv^,iLength);// Socket.SendText('44444'); end; finally FreeMem(bufRecv,iLength); //FreeMem(bufRecv,2000); end; end;以上这段代码是接收文件的。。不能和strback:=socket.ReceiveText; strfile:=copy(strback,6,length(strback)-5); if pos('list!',strback)=1 then //文件 begin listbox1.Items.Text:=strfile; end;这段代码用在一起。。我把代码都贴出来了。。希望高手指点如何让他们共存啊···
iLength:=Socket.ReceiveLength; //了解到达缓冲区的字节数
GetMem(bufRecv,iLength);//分配内存
try
Socket.ReceiveBuf(bufRecv^,iLength); //接收数据包并读入缓冲区内
sTemp:=StrPas(PChar(bufRecv));
sTemp:=Copy(sTemp,1,5);
if sTemp='11111' then
begin
sTemp:=Trim(StrPas(PChar(bufRecv)));
sFileName:=ExtractFileName(Copy(sTemp,6,Length(STemp)));
//在这里拒绝
SaveDialog1.Title:='保存下载文件:';
SaveDialog1.FileName:=sFileName;
if SaveDialog1.Execute then
begin
stream:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
//如果愿意接收数据。
//memo1.Lines.Add ('开始接收!');//??????
TickCount:=GetTickCount;
Socket.SendText('33333');
//通知发送端发送数据。
bStart:=False;
end
else
Socket.SendText('22222');
end else if sTemp='00000' then
begin
//要发送StrToInt(Copy(sTemp,2,Length(sTemp))) 次
//时间进度显示
//iRecvLength:=StrToInt(Copy(sTemp,2,Length(sTemp)));//;1024
Socket.SendText('44444');
//接收文件长度并要求继续传送数据。
end else if sTemp='44444' then
begin
Socket.SendText('55555');
//要求发送端发送数据。
//准备好接收数据。
end else if sTemp='77777' then
begin
//memo1.Lines.Add ('MP_OVER');//??????
stream.Free;
end else if sTemp='99999' then//文件传送结束。
begin
//memo1.Lines.Add ('结束!'+IntToStr(GetTickCount-TickCount));//??????
stream.Free;
end else if sTemp='66666' then
begin
//memo1.Lines.Add ('MP_ABORT');//??????
stream.Free;
end else
begin
if not bStart then
begin
//memo1.Lines.Add('接收数据...');//??????
bStart:=True;
end;
stream.WriteBuffer(bufRecv^,iLength);//
Socket.SendText('44444');
end;
finally
FreeMem(bufRecv,iLength);
//FreeMem(bufRecv,2000);
end;
end;以上这段代码是接收文件的。。不能和strback:=socket.ReceiveText;
strfile:=copy(strback,6,length(strback)-5);
if pos('list!',strback)=1 then //文件
begin
listbox1.Items.Text:=strfile;
end;这段代码用在一起。。我把代码都贴出来了。。希望高手指点如何让他们共存啊···
先up