API定义:
[DllImport("wininet.dll", EntryPoint = "InternetSetOptionA", CharSet = CharSet.Ansi, SetLastError = true, PreserveSig = true)]
public static extern bool InternetSetOption(int hInternet, int dwOption, ref int lpBuffer, int dwBufferLength);
//连接超时
public const int INTERNET_OPTION_CONNECT_TIMEOUT = 2;
//
public const int INTERNET_OPTION_CONNECT_RETRIES = 3;
//送信超时时间
public const int INTERNET_OPTION_SEND_TIMEOUT = 5;
//受信超时时间
public const int INTERNET_OPTION_RECEIVE_TIMEOUT = 6;
调用:
int lnghInet = APIs.InternetOpen("PC", INTERNET_OPEN_TYPE_DIRECT, null, null, 0);
int lngCTimeOut = 60 * 1000; //连接超时时间60秒
int lngRTimeOut = 60 * 1000; //受信超时时间60秒
bool lnghOption = false;
//连接超时时间设定
lnghOption = APIs.InternetSetOption(lnghInet, APIs.INTERNET_OPTION_CONNECT_TIMEOUT, ref lngCTimeOut, Marshal.SizeOf(lngCTimeOut));
//受信超时时间设定
lnghOption = APIs.InternetSetOption(lnghInet, APIs.INTERNET_OPTION_RECEIVE_TIMEOUT, ref lngRTimeOut, Marshal.SizeOf(lngRTimeOut));
//FTP连接
int lnghConnect = APIs.InternetConnect(lnghInet, ServerIP, INTERNET_INVALID_PORT_NUMBER, FTP_USER_NAME, FTP_USER_PASSWORD, INTERNET_SERVICE_FTP, 0, 0);