ClientSocket1.Host :=shost;
ClientSocket1.Port := strtoint(sport); ClientSocket1.Active := false;
ClientSocket1.Active := true;
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
if pos('220',cmd1)=0 then exit; ////////这里返回值正常//////// ClientSocket1.Socket.SendText('USER '+trim(sname)+'/r/n');
ClientSocket1.Socket.SendText('PASS '+trim(spass)+'/r/n');
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000); ///////这里超时,cmd1返回空值,为什么? /////
ClientSocket1.Port := strtoint(sport); ClientSocket1.Active := false;
ClientSocket1.Active := true;
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
if pos('220',cmd1)=0 then exit; ////////这里返回值正常//////// ClientSocket1.Socket.SendText('USER '+trim(sname)+'/r/n');
ClientSocket1.Socket.SendText('PASS '+trim(spass)+'/r/n');
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000); ///////这里超时,cmd1返回空值,为什么? /////
解决方案 »
- combobox 下来菜单中能自动滤去相同的内容吗?
- 有钱人真是牛B到底了!
- 请问如何在DELPHI中安装TQuickRep等报表控件?
- 谁知道CSDN的搜索链接?前一段时间论坛上有链接,现在不知道去哪里,请帮助!
- 如何打印dbgrid里面的记录
- UltraEdit好象不支持Delphi语法,有没有补丁之类的?如果没有,有其他好的编辑器吗?
- 在函数声明时,什么时候声明为override、overload、abstract、virtual、reintroduce等?
- 请问各位,用delphi在sql server 的image字段中存储word的doc文件,超过30k就出错,怎么办?!!
- 怎样循环读完一个类型文件?
- 我编写的程序结束的时候用Application.destroy来关闭应用程序 可是在进程中还有 是不是我用错了
- 疑惑
- tclientsocket版本不同
ClientSocket1.Socket.SendText('USER '+trim(sname) + #13#10);
我自己解决了,但这问题的分数不能浪费,我要问一个其它的问题补数,迟点我就会提出来,一解决分数照送
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
ClientSocket1.Socket.SendText('PASS '+trim(spass) + #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
if pos('230',cmd1)=0 then exit;
ClientSocket1.Socket.SendText('REST '+inttostr(100) + #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
if pos('350',cmd1)=0 then exit;
ClientSocket1.Socket.SendText('PASV' + #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
ClientSocket1.Socket.SendText('TYPE I' + #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
ClientSocket1.Socket.SendText('REST '+inttostr(pos1) + #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
if pos('350',cmd1)=0 then exit;
到了这步我想下载一个文件该怎么写?怎样才能接收文件的数据?
ClientSocket1.Socket.SendText('RETR test.txt'+ #13#10);
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);
这个好像是错误的,我上面是有个test.txt的文件,但返回的是空值
cmd1 := socket_rec_line1(ClientSocket1.Socket, 5 * 1000);不能继续用socket_rec_line1,因为前面返回的都是命令行,也可以说是字符串,但是现在你要接收的是一个二进制数据,要用buffer 来接收,
while ClientSocket1.Active = true do begin
zeromemory(@buf1, readmemory);
FSocketStream := TWinSocketStream.Create(ClientSocket1.Socket, 15000);
if not FSocketStream.WaitForData(timeout) then begin
break;
end
else begin
if bigflag = true then
rec1 := FSocketStream.Read(buf1, readmemory)
else
rec1 := FSocketStream.Read(buf1, 1);
end;
blockwrite(f1, buf1, rec1);
end;
我这样接着写也不行,只接受一段以下英文
426-Maximum disk quota limited to 2000000 Kbytes
Used disk quota 271339 Kbytes, available 1728660 Kbytes
426 Transfer aborted.
227 Entering Passive Mode (211,154,104,140,16,238)
200 Type set to I.
接着下一次循环就超时了,不在循环读,有谁能解决?