我从filestream中读出的文本文件内容放在ss(string)中,每次读1024个,用clientsocket的阻塞方式发给服务器,发送前显示没有问题,为什么服务器能受到却显示不出那?代码如下(files里面放着所有的文件路径):procedure tsendfile.mysend(sender:tobject);
var i,j,fpos,n:integer;
stream:twinsocketstream;
filestream:tfilestream;
ss:string; //n为返回的文件位置
s:pchar;
begin
fpos:=0; //表示文件目前位置
form1.ClientSocket4.Open;
stream:=twinsocketstream.Create(form1.ClientSocket4.Socket,60000);
for i:=0 to files.Count-1 do
begin
filestream:=tfilestream.Create(files[i],fmopenread);
while fpos<filestream.Size do
begin
if (fpos+1024)>filestream.Size then //判断是否到文件末尾
ss:='';
setlength(ss,1024);
filestream.Seek(fpos,soFromBeginning);
filestream.Read(ss[1],1024);
screen.Cursor:=-11;
form1.ClientSocket4.Close;
form1.ClientSocket4.Open;
stream.Write(ss,length(ss)+1);
form1.ClientSocket4.Close;
screen.Cursor:=-2;
fpos:=fpos+1024;
end;
filestream.Destroy;
end;
end;
var i,j,fpos,n:integer;
stream:twinsocketstream;
filestream:tfilestream;
ss:string; //n为返回的文件位置
s:pchar;
begin
fpos:=0; //表示文件目前位置
form1.ClientSocket4.Open;
stream:=twinsocketstream.Create(form1.ClientSocket4.Socket,60000);
for i:=0 to files.Count-1 do
begin
filestream:=tfilestream.Create(files[i],fmopenread);
while fpos<filestream.Size do
begin
if (fpos+1024)>filestream.Size then //判断是否到文件末尾
ss:='';
setlength(ss,1024);
filestream.Seek(fpos,soFromBeginning);
filestream.Read(ss[1],1024);
screen.Cursor:=-11;
form1.ClientSocket4.Close;
form1.ClientSocket4.Open;
stream.Write(ss,length(ss)+1);
form1.ClientSocket4.Close;
screen.Cursor:=-2;
fpos:=fpos+1024;
end;
filestream.Destroy;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货