控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx

上传人:b****5 文档编号:20471890 上传时间:2023-01-23 格式:DOCX 页数:9 大小:18.80KB
下载 相关 举报
控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx_第1页
第1页 / 共9页
控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx_第2页
第2页 / 共9页
控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx_第3页
第3页 / 共9页
控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx_第4页
第4页 / 共9页
控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx

《控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。

控制远程计算机拨号上网并获取其IP地址Word格式文档下载.docx

中断和远程计算机的拨号连接,也准备登录Internet。

三、获取远程计算机InternetIP地址

在取得远程计算机InternetIP地址前,本地计算机是无法通过Internet和远程

计算机进行实时通信的。

远程计算机登录Internet,获取动态IP地址后,可通过

发电子邮件方式将动态IP地址通知本地计算机,也可通过将动态IP地址保存在远

程、本地计算机都可访问到的FTP服务器文件中,供本地计算机读取。

本文采用后

一种方法,若没有合适的FTP服务器,可到提供免费主页空间允许以FTP方式维护

的Web站点上申请一块空间,供远程、本地计算机共同访问。

本地计算机登录Internet后,用FTP协议读取指定FTP服务器上含有远程计算机动

态IP地址的文本文件,从而取得远程计算机的InternetIP地址,然后,本地计算

机便可通过Internet和远程计算机启动任何基于TCP/IP连接的通信应用程序,如

利用Pcanywhere控制远程计算机,并可通过远程计算机访问与远程计算机相连的

整个网络资源,达到对远程计算机系统进行维护的目的。

四、通知远程计算机断开Internet连接

当本地计算机和远程计算机通信结束后,便可通知远程计算机断开Internet连接。

利用远程计算机的InternetIP地址,本地计算机和远程计算机建立TCP/IP连接,送

出断开Internet指令,远程计算机收到指令后,回送确认消息,断开Internet连接,

等待下一个命令的到来。

五、程序实现

本地、远程计算机运行的是同一道程序,通过不同的命令按钮来激活本地、远程

计算机程序所具有的不同功能。

程序采用VC++6.0编写,在Win98环境下调试运行

通过。

限于篇幅,下面只给出程序的主要部分及注释说明,并省去了一些出错处理环节。

 

//宏定义

#defineMAX_PENDING_CONNECTS2

#defineNO_FLAGS_SET0

#defineMY_MSG_LENGTH100

//全局变量

HRASCONNhCon;

//RAS连接句柄

HWNDhWin;

HINSTANCEhInst;

DWORDThreadId=0;

HANDLEhThread=NULL;

charcRemoteIP[50];

//remoteIP地址

SOCKETserv_sock,rsock;

//服务端

//建立拨号连接函数,成功返回TRUEelseFALSE

//szEntry拨号连接名szPhone电话号码szUser和szPassword分别为internet的用户名和口令

BOOLStartCon(HWNDhWnd,char*szEntry,char*szUser,char*szPassword,char*szPhone)

{

RASDIALPARAMSrdParams;

DWORDdwRet;

charszBuf[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);

returnTRUE;

}

//通过FTP协议读写FTP服务器上文件的函数cFlag=0写=1读,读写成功时返回所读写的字节数

DWORDFtpWriteRead(char*cFtpHost,char*cFile,DWORDdwLen,char*buf,charcFlag)

HINTERNEThInternet,hHost,hFile;

DWORDdwLength,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=FtpOpenFile(hHost,cFile,GENERIC_WRITE,FTP_TRANSFER_TYPE_BINARY,0)

else

hFile=FtpOpenFile(hHost,cFile,GENERIC_READ,FTP_TRANSFER_TYPE_BINARY,0);

if(!

hFile)

if((dwError=GetLastError())==12003)

ShowMsg(hWin,"

文件不存在"

);

InternetCloseHandle(hHost);

InternetCloseHandle(hInternet);

return0L;

if(cFlag==0)

InternetWriteFile(hFile,buf,dwLen,&

dwLength);

InternetReadFile(hFile,buf,dwLen,&

InternetCloseHandle(hFile);

returndwLength;

//通过FTP协议删除FTP服务器上文件的函数cFtpHost主机地址cFile文件名

BOOLMyFtpDeleteFile(char*cFtpHost,char*cFile)

HINTERNEThInternet,hHost;

hHost=InternetConnect(hInternet,cFtpHost,INTERNET_INVALID_PORT_NUMBER,"

fzabc"

b505"

INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);

FtpDeleteFile(hHost,cFile);

//本地计算机运行线程函数pp功能代码

voidCallThread(void*pp)

DWORD*dwId,dwLen,ret,ll;

RASPPPIPrip;

charszIp[50],*pdest;

dwId=(DWORD*)pp;

switch(*dwId)

caseIDC_CALL:

//通知远程计算机登录Internet

 ShowMsg(hWin,"

Callremote..."

 if(StartCon(hWin,"

connect"

"

d123"

9W7607714"

)==TRUE)

RemoteConnected"

//取remote分配的IP地址

rip.dwSize=sizeof(RASPPPIP);

if((ret=RasGetProjectionInfo(hCon,RASP_PppIp,(LPVOID)&

rip,(LPDWORD)&

ll))!

=0)

  ShowMsg(hWin,"

取IP地址失败"

  ShowMsg(hWin,rip.szIpAddress);

  strcpy(szIp,rip.szIpAddress);

  pdest=strrchr(szIp,‘.'

*pdest=‘\0'

strcat(szIp,"

.1"

  ShowMsg(hWin,szIp);

  SendCmd(szIp,"

REQUEST"

RasHangUp(hCon);

Callremotefail"

hCon=NULL;

break;

caseIDC_INTERNET:

//本地计算机登录Internet

正在连接Internet..."

StartCon(hWin,"

internet"

local@"

aabb99"

9W163"

);

caseIDC_ADDRESS:

//读取远程计算机InternetIP地址

正在取IP地址..."

if((dwLen=FtpWriteRead("

abc.txt"

40,cRemoteIP,1))>

0)

cRemoteIP[dwLen]=‘\0'

ShowMsg(hWin,cRemoteIP);

删除IP地址文件.."

MyFtpDeleteFile("

取IP失败"

caseIDC_RDISC:

//通知远程计算机断开Internet连接

正在向远端发Disconnect..."

SendCmd(cRemoteIP,"

DISCONNECT"

ThreadId=0;

hThread=NULL;

return;

//远程计算机运行线程函数

voidServerThread(void*pp)

DWORDret,ll;

SOCKADDR_INacc_sin,dest_sin;

//地址

intacc_sin_len,status;

charszMsg[MY_MSG_LENGTH];

serv_sock=socket(AF_INET,SOCK_STREAM,0);

dest_sin.sin_family=AF_INET;

dest_sin.sin_addr.s_addr=INADDR_ANY;

dest_sin.sin_port=htons(1023);

bind(serv_sock,(structsockaddrFAR*)&

dest_sin,sizeof(dest_sin));

listen(serv_sock,MAX_PENDING_CONNECTS);

while(TRUE)

acc_sin_len=sizeof(acc_sin);

等待呼叫"

rsock=accept(serv_sock,(structsockaddrFAR*)&

acc_sin,(intFAR*)&

acc_sin_len);

if(rsock<

0)

{ShowMsg(hWin,"

AcceptError!

收到连接请求!

status=recv(rsock,szMsg,MY_MSG_LENGTH,NO_FLAGS_SET);

if(status==SOCKET_ERROR)

RecvError!

if(status)

szMsg[status]=‘\0'

ShowMsg(hWin,szMsg);

if(strstr(szMsg,"

)!

=NULL)

isend(rsock,"

OK"

2,0);

closesocket(rsock);

Sleep(3000);

//等待拨号连接退出

if(StartCon(hWin,"

163"

remote@"

abcd"

//取动态分配的IP地址

ShowMsg(hWin,rip.szIpAddress);

SendIPAdrress....!

FtpWriteRead("

strlen(rip.szIpAddress),rip.szIpAddress,0);

Connectinternetfail"

}//if(strstr(szMsg,"

send(rsock,"

}//endif(strstr(szMsg,"

}//endif(status)

连接断开!

等待下一个"

}//endwhile(TRUE)

if(hCon!

{RasHangUp(hCon);

hCon=NULL;

closesocket(serv_sock);

//实现本地计算机向远程计算机发送命令的函数cIp远程计算机IP地址SzCmd命令字符串

BOOLSendCmd(char*cIp,char*szCmd)

SOCKADDR_INdest_sin;

intstatus;

rsock=socket(AF_INET,SOCK_STREAM,0);

dest_sin.sin_addr.s_addr=inet_addr(cIp);

if(connect(rsock,(PSOCKADDR)&

dest_sin,sizeof(dest_sin))<

连接失败"

closesocket(rsock);

returnFALSE;

if(send(rsock,szCmd,strlen(szCmd),0)!

=strlen(szCmd))

送命令失败"

if(status!

=0&

&

strstr(szMsg,"

{closesocket(rsock);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1