写了一段ftp客户端的程序(Win200+VC6),但是不知如何控制连接一个非法地址时间
#include <windows.h>
#include <Wininet.h>
#pragma comment(lib,"Wininet.lib")
void main()
{
char szAddr[150];
int ticks;
int OptionVal, OptionLen;
while(1)
{
memset(szAddr, 0, sizeof(szAddr));
printf("Input server:");
scanf("%s", szAddr);
if (strcmp(szAddr, "aaa") == 0)
break;
ticks = GetTickCount();
InternetAttemptConnect(0);
OptionVal = 1;
OptionLen = sizeof(int);
if (!InternetSetOption(NULL, INTERNET_OPTION_CONNECT_RETRIES, &OptionVal, OptionLen))
{
printf("Can't set option[ticks:%d]\n", GetTickCount() - ticks);
continue;
}
if (!InternetQueryOption(NULL, INTERNET_OPTION_CONNECT_RETRIES, &OptionVal, &OptionLen))
{
printf("Can't set option[ticks:%d]\n", GetTickCount() - ticks);
continue;
}
printf("Connect retry times:%d\n", OptionVal);
OptionVal = 5000;
OptionLen = sizeof(int);
if (!InternetSetOption(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &OptionVal, OptionLen))
{
printf("Can't set option[ticks:%d]\n", GetTickCount() - ticks);
continue;
}
OptionVal = 5000;
OptionLen = sizeof(int);
if (!InternetQueryOption(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &OptionVal, &OptionLen))
{
printf("Can't set option[ticks:%d]\n", GetTickCount() - ticks);
continue;
}
printf("Connect retry times:%d\n", OptionVal);
if (!InternetCheckConnection(szAddr, FLAG_ICC_FORCE_CONNECTION, 0))
{
printf("Can't connect server[server:%s,ticks:%d]\n", szAddr, GetTickCount() - ticks);
continue;
}
printf("Connect server[server:%s,ticks:%d]\n", szAddr, GetTickCount() - ticks);
}
}
这段程序如果szAddr是不存在的地址,需要耗时20--23S左右,能不能控制短一点?
Input server:ftp://10.130.28.200/
Connect retry times:1
Connect retry times:5000
Connect server[server:ftp://10.130.28.200/,ticks:280]
Input server:ftp://10.130.23.200/
Connect retry times:1
Connect retry times:5000
Can't connect server[server:ftp://10.130.23.200/,ticks:20980]
Input server:ftp://10.130.23.200/
Connect retry times:1
Connect retry times:5000
Can't connect server[server:ftp://10.130.23.200/,ticks:21190]