InternetConnectA 函数 (wininet.h)

为给定站点打开文件传输协议(FTP)或 HTTP 会话。

语法

HINTERNET InternetConnectA(
  [in] HINTERNET     hInternet,
  [in] LPCSTR        lpszServerName,
  [in] INTERNET_PORT nServerPort,
  [in] LPCSTR        lpszUserName,
  [in] LPCSTR        lpszPassword,
  [in] DWORD         dwService,
  [in] DWORD         dwFlags,
  [in] DWORD_PTR     dwContext
);

参数

[in] hInternet

上一次调用 InternetOpen返回的句柄。

[in] lpszServerName

指向指定 Internet 服务器的主机名的 null终止字符串的指针。 或者,字符串可以包含站点的 IP 号,采用 ASCII 点十进制格式(例如 11.0.1.45)。

[in] nServerPort

服务器上的传输控制协议/Internet 协议(TCP/IP)端口。 这些标志仅设置使用的端口。 该服务由 dwService的值设置。 此参数可以是下列值之一。

价值 意义
INTERNET_DEFAULT_FTP_PORT
将默认端口用于 FTP 服务器(端口 21)。
INTERNET_DEFAULT_GOPHER_PORT
使用 Gopher 服务器的默认端口(端口 70)。
注意仅 Windows XP 和 Windows Server 2003 R2 及更早版本。
 
INTERNET_DEFAULT_HTTP_PORT
使用 HTTP 服务器的默认端口(端口 80)。
INTERNET_DEFAULT_HTTPS_PORT
使用安全超文本传输协议(HTTPS)服务器(端口 443)的默认端口。
INTERNET_DEFAULT_SOCKS_PORT
将默认端口用于 SOCKS 防火墙服务器(端口 1080)。
INTERNET_INVALID_PORT_NUMBER
使用由 dwService指定的服务的默认端口。

[in] lpszUserName

指向 null-terminated 字符串的指针,该字符串指定要登录的用户的名称。 如果此参数 NULL,则该函数使用适当的默认值。 对于 FTP 协议,默认值为“anonymous”。

[in] lpszPassword

指向 null终止字符串的指针,其中包含用于登录的密码。 如果 lpszPasswordlpszUsernameNULL,则该函数将使用默认的“匿名”密码。 对于 FTP,默认密码是用户的电子邮件名称。 如果 lpszPasswordNULL,但 lpszUsernameNULL,则该函数使用空白密码。

[in] dwService

要访问的服务的类型。 此参数可以是下列值之一。

价值 意义
INTERNET_SERVICE_FTP
FTP 服务。
INTERNET_SERVICE_GOPHER
Gopher 服务。
注意仅 Windows XP 和 Windows Server 2003 R2 及更早版本。
 
INTERNET_SERVICE_HTTP
HTTP 服务。

[in] dwFlags

特定于所用服务的选项。 如果
dwService 是INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE 导致应用程序使用被动 FTP 语义。

[in] dwContext

指向包含应用程序定义的值的变量的指针,该变量用于标识回调中返回的句柄的应用程序上下文。

返回值

如果连接成功,则返回会话的有效句柄,否则 NULL。 若要检索扩展的错误信息,请调用 GetLastError。 应用程序还可以使用 InternetGetLastResponseInfo 来确定拒绝访问服务的原因。

言论

下表描述了 lpszUsernamelpszPassword的四个可能设置的行为。

lpszUsername lpszPassword 发送到 FTP 服务器的用户名 发送到 FTP 服务器的密码
NULL NULL “anonymous” 用户的电子邮件名称
NULL 字符串 NULL lpszUsername ""
NULL NULL 字符串 错误 错误
NULL 字符串 NULL 字符串 lpszUsername lpszPassword
 

对于 FTP 站点,InternetConnect 实际上与服务器建立连接;对于其他人,在应用程序请求特定事务之前,不会建立实际连接。

为了提高效率,使用 HTTP 协议的应用程序应尽量减少对 InternetConnect 的调用,并避免为用户请求的每个事务调用此函数。 实现此目的的一种方法是保留从 InternetConnect返回的句柄的小型缓存;当用户向以前访问的服务器发出请求时,该会话句柄仍可用。

调用应用程序使用 InternetConnect返回的 HINTERNET 句柄后,必须使用 InternetCloseHandle 函数将其关闭。

注意 当发送请求异步模式(InternetOpen 指定 INTERNET_FLAG_ASYNCdwFlags 参数)且 dwContext 参数为零(INTERNET_NO_CALLBACK),则连接句柄上带有 InternetSetStatusCallback 的回调函数将不会被调用,但是,仍将在异步模式下执行调用。

可以在以下主题中找到 InternetConnect 用法的示例。

与 WinINet API 的其他所有方面一样,不能从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。

注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP 服务(WinHTTP)
 

注意

wininet.h 标头将 InternetConnect 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 wininet.h
Wininet.lib
DLL Wininet.dll

另请参阅

启用 Internet 功能

WinINet 函数