猛禽,你的“MSocket 控件”究竟怎样实现文件下载啊???(300分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
我在http://msrc.126.com的本站作品中下了“MSocket 控件”。
里面的DEMO比较简单,我想把DEMO扩充一下,实现我的文件上传和下载的功能。
(1)客户端连接服务器,并发出上传或者下载的请求;
(2)服务器返回信息,同意上传或者直接把文件传到客户端。
(3)客户端上传文件,或者接收文件。

然而,我把你的程序改了,结果(1)可以。但是(2)在服务器把文件传到客户端是出错:
服务器的错误是:Send data error!Socket error code : 10035
客户端的错误是:Receive data error!
究竟应该怎么改啊?可以写个DEMO吗?
另外,在传输数据的过程中,如何让用户知道传输进度啊?
 
客户端关键代码是:
Try
aSocket.RemoteHost := 'localhost';
aSocket.RemotePort := 12345;
aSocket.Open;
aData.LoadFromFile( Edit3.Text );
aSocket.SendData( aData );
aSocket.RecvData( aData );
aData.SaveToFile( 'temp.dat' );
except
on E:Exception do begin
showmessage(E.Message);
end;
End;
 
这个好吗,我也下载试试看。
 
呵,你忘记在OPEN后还要Connect一下了。^_^
 
怎么Connect啊?
服务器是知道客户端连上来了啊!只是下文件的时候,也就是
aSocket.RecvData( aData );出现错误!
应该怎么解决啊?
 

Try
aSocket.RemoteHost := 'localhost';
aSocket.RemotePort := 12345;
aSocket.Open;
If ( aSocket.Connect ) Then
Begin
aData.LoadFromFile( Edit3.Text );
aSocket.SendData( aData );
aSocket.RecvData( aData );
aData.SaveToFile( 'temp.dat' );
End
except
on E:Exception do begin
showmessage(E.Message);
end;
End;
 
to 猛禽:
  老哥,连编译也过不了啊!
[Error] clnMain.pas(51): Undeclared identifier: 'Connect'
 
to 猛禽:
编译好client后。一点send request 就弹出invalid data size....

怎么回事阿???

 
呵,不好意思,我自己现在也有点糊涂了,因为我在公司里用的一个版本比较老,有一个
CONNECT方法,后来把它并到OPEN里,但是我忘记了。^_^

你这个问题是因为你用的那个MSOCKET版本的BUG,我已经修正了,你用我11月4日上传的版本
再试试。
 
我用的已经是11月4日的版本了。
 
快改正,快改正......我们大家都需要.
 
多人接受答案了。
 
惭愧,前一段忙着过年了。
那个问题已经找到原因了,这几天我就会把它改好。^_^
 
后退
顶部