我正在为Delphi XE5上的 Android 开发FTP服务器。 (组件IdFTPServer)。 服务器启动:
procedure TForm1.Button1Click(Sender: TObject);
begin
Server.DefaultPort := 1032;
Server.DefaultDataPort := 1926;
Server.Bindings.Add.IPVersion := Id_IPv4;
//Server.ReuseSocket := rsTrue;
Server.Active := true;
if Server.Active = true then
begin
Label1.Text := GetIP+':'+IntToStr(Server.DefaultPort);
end;
end;
当客户想连接时(我正在使用FileZilla)我收到错误: ECONNREFUSED - 连接被服务器拒绝。
但是当我为 Windows 开发FTPServer时,我没有收到错误,客户端可以连接。这工作......
答案 0 :(得分:0)
ECONNREFUSED
表示操作系统本身,而不是 Indy ,拒绝连接。 Indy永远不会看到被拒绝的连接,因此无法控制它们。对于Windows服务器,ECONNREFUSED
表示服务器端口根本未打开,或者此时端口的待处理客户端连接积压已满。在Android上,情况可能也是如此,但Android也有其他要求,例如要求启用 INTERNET 权限(当某些套接字错误发生时,Indy的最新版本现在会检查),以及也可能还有 ACCESS_WIFI_STATE , CHANGE_WIFI_STATE 和/或 ACCESS_NETWORK_STATE 权限。