5,392
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdFTP1.Connect;
except
On E:Exception do begin
if E is EIdSocketError then begin
case EIdSocketError(E).LastError of
WSANOTINITIALISED: ShowMessage('未应用程序没有调用 WSAStartup,或者 WSAStartup 失败,或者在此之前调用了 WSACleanup。');
WSAENETDOWN: ShowMessage('套接字操作遇到了一个已死的网络。网络子系统已经失效.');
WSAEADDRINUSE: ShowMessage('端口被占用,通常每个套接字地址(协议/网络地址/端口)只允许使用一次。');
WSAEINTR: ShowMessage('一个封锁(阻塞)操作被使用 WSACancelBlockingCall 的调用中断。');
WSAEINPROGRESS: ShowMessage('目前正在执行一个阻塞性操作。');
WSAEALREADY:ShowMessage('在一个非阻塞性套接字上尝试了一个已经在进行的操作。 ');
WSAEADDRNOTAVAIL:ShowMessage('请求的地址无效。');
WSAEAFNOSUPPORT: ShowMessage('使用了与请求的协议不兼容的地址。');
WSAECONNREFUSED: ShowMessage('连接被远程主机拒绝');
WSAEFAULT: ShowMessage('系统检测到在一个调用中尝试使用指针参数时的无效指针地址。');
WSAEINVAL: ShowMessage('提供了一个无效的参数。连接所使用的套接字描述符可能正在监听中。');
WSAEISCONN: ShowMessage('在一个已经连接的套接字上做了一个连接请求。');
WSAENETUNREACH: ShowMessage('向一个无法连接的网络尝试了一个套接字操作');
WSAEHOSTUNREACH: ShowMessage('套接字操作尝试一个无法连接的主机。');
WSAENOBUFS: ShowMessage('由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。');
WSAENOTSOCK: ShowMessage('在一个非套接字上尝试了一个操作。套接字描述符(Socket)无效');
WSAETIMEDOUT: ShowMessage('由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。');
WSAEWOULDBLOCK:ShowMessage('无法立即完成一个非阻止性套接字操作。在非阻塞操作当中,通常此错误表示操作成功。');
WSAEACCES: ShowMessage('以一种访问权限不允许的方式做了一个访问套接字的尝试。');
end;
end;
end;
end;
end;
try
FTP.Connect;
except
case GetLastError of
9001:ShowMessage('DNS 服务器无法解释格式');
9002:ShowMessage('DNS 服务器失败');
10060:ShowMessage('由于连接方在一段时间后没有正确的答复或连接的主机没有反应,连接尝试失败');
10061:ShowMessage('能做任何连接,因为目标机器积极地拒绝它');
...
end;
end;