socket 问题(50分)

Z

zebra

Unregistered / Unconfirmed
GUEST, unregistred user!
一个传送文件的小程序,要求传送文件大小5M以内,格式多种,用clientsocke,serversocket
非阻塞方式,从serversocke 传到clientsocket,编译后通过,但是单步执行后不能从本地磁盘中
读出文件,部分代码如下:
procedure TForm1.Button1Click(Sender: TObject); //serversocket 服务器端
var
mystream:TMemoryStream;
begin
mystream:=TMemoryStream.Create;
mystream.Position:=0;
mystream.LoadFromFile('d:/1.htm'); //此句不能读出文件
serversocket1.Socket.SendStream(mystream);
end;
end;

恳请大家帮忙解决,或者帮发些例子源码给我 genghuang@163.net
非常感谢!
 
有个比较笨的方法:
var
myFileStream:TFileStream;
myStream:TMemoryStream;
begin
myStream:=TMemoryStream.Create;
myFileStream:=TFileStream.Create('d:/1.htm');
myStream.LoadfromStream(myFileStream);
myFileStream.Free;
serversocket1.Socket.SendSTream(mystream);
myStream.Free;
end;
 
这行代码可以将文件LOAD进去吗?他的问题好像是文件不能LOAD。不过我只是说说,我也没有更好的办法了
 
根据以上代码修改后编译出错:
[Error] Unit1.pas(140): There is no overloaded version of 'Create' that can be called with these arguments
 
//myFileStream:=TFileStream.Create('d:/1.htm');
myFileStream:=TFileStream.Create('d:/1.htm',fmOpenRead);
^^^^^^^^^^^^^^^^^
 
mystream:=TMemoryStream.Create;
mystream.Position:=0;
mystream.LoadFromFile('d:/1.htm'); //此句不能读出文件

serversocket1.Socket.Connection[0].SendBuf(myStream.Memory^, myStream.Size);

or
mystream.loadfromfile('d:/1.htm');
mystream.position := 0;
...
 
直接用FileStream来读文件,循环发送,这样要稳定的多, 直接用内存流,
我试过的,效果不太好。
 
多人接受答案了。
 
顶部