Internet 和 远 程 计 算 机 启 动 任 何 基 于TCP/IP 连 接 的 通 信 应 用 程 序, 如 利 用Pcanywhere 控 制 远 程 计 算 机, 并 可 通 过 远 程 计 算 机 访 问 与 远 程 计 算 机 相 连 的 整 个 网 络 资 源, 达 到 对 远 程 计 算 机 系 统 进 行 维 护 的 目 的。
四、 通 知 远 程 计 算 机 断 开Internet 连 接
---- 当 本 地 计 算 机 和 远 程 计 算 机 通 信 结 束 后, 便 可 通 知 远 程 计 算 机 断 开Internet 连 接。 利 用 远 程 计 算 机 的 Internet IP 地 址, 本 地 计 算 机 和 远 程 计 算 机 建 立TCP/IP 连 接, 送 出 断 开Internet 指 令, 远 程 计 算 机 收 到 指 令 后, 回 送 确 认 消 息, 断 开 Internet 连 接, 等 待 下 一 个 命 令 的 到 来。
五、 程 序 实 现
----本 地、 远 程 计 算 机 运 行 的 是 同 一 道 程 序, 通 过 不 同 的 命 令 按 钮 来 激 活 本 地、 远 程 计 算 机 程 序 所 具 有 的 不 同 功 能。 程 序 采 用VC + +6.0 编 写, 在Win98 环 境 下 调 试 运 行 通 过。 限 于 篇 幅, 下 面 只 给 出 程 序 的 主 要 部 分 及 注 释 说 明, 并 省 去 了 一 些 出 错 处 理 环 节。
// 宏 定 义
#define MAX_PENDING_CONNECTS 2
#define NO_FLAGS_SET 0
#define MY_MSG_LENGTH 100
// 全 局 变 量
HRASCONN hCon; //RAS 连 接 句 柄
HWND hWin;
HINSTANCE hInst;
DWORD ThreadId=0;
HANDLE hThread=NULL;
char cRemoteIP[50]; //remote IP 地 址
SOCKET serv_sock,rsock; // 服 务 端
// 建 立 拨 号 连 接 函 数,
成 功 返 回 TRUE else FALSE
// szEntry 拨 号 连 接 名 szPhone
电 话 号 码 szUser 和szPassword
分 别 为internet 的 用 户 名 和 口 令
BOOL StartCon( HWND hWnd,char * szEntry,char
* szUser,char * szPassword,char * szPhone )
{
RASDIALPARAMS rdParams;
DWORD dwRet;
char szBuf[300];
rdParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy(rdParams.szEntryName,szEntry);
strcpy(rdParams.szPhoneNumber,szPhone);
rdParams.szCallbackNumber[0] = ‘\0'';
strcpy(rdParams.szUserName,szUser);
strcpy(rdParams.szPassword,szPassword);
rdParams.szDomain[0] = ‘\0'';
// 以 下 开 始 同 步 拨 叫 网 络
dwRet = RasDial( NULL, NULL,
&rdParams, 0L, NULL, &hCon );
return TRUE;
}
// 通 过FTP 协 议 读 写FTP 服 务 器 上
文 件 的 函 数 cFlag =0 写 =1 读, 读 写
成 功 时 返 回 所 读 写 的 字 节 数
DWORD FtpWriteRead(char * cFtpHost,char *
cFile,DWORD dwLen,char * buf,char cFlag)
{
HINTERNET hInternet,hHost,hFile;
DWORD dwLength,dwError;
hInternet=InternetOpen(“FZYXB",LOCAL
_INTERNET_ACCESS,
NULL,0,0);
hHost=InternetConnect(hInternet,cFtpHost,
INTERNET_INVALID_PORT_NUMBER,
“fzxucm",“abc505",
INTERNET_SERVICE_FTP,INTERNET
_FLAG_PASSIVE,0);
if ( cFlag == 0 ) // 写
hFile=F