ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:18.80KB ,
资源ID:7362533      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7362533.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(控制远程计算机拨号上网并获取其IP地址.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

控制远程计算机拨号上网并获取其IP地址.docx

1、控制远程计算机拨号上网并获取其IP地址控制远程计算机拨号上网并获取其IP地址 一、 问题的提出许多计算机系统需要724小时稳定可靠运行,当出现突发事件时,要求能对系统实施远程系统维护以便排除故障,此时就需要本地计算机和远程系统建立通信连接,通过相应的工具软件实施远程维护。在建立远程通信连接时,通常采用Modem拨号方法将远端Modem置为自动应答方式,由本地Modem通过公用电话网发起呼叫来建立通信连接。当主、被叫Modem所在地之间的长途费率较高时,经常的远程维护将带来较高的长途话费开支。本文提出通过Internet建立两台计算机之间通信的方法。二、通知远程计算机拨号上网远程计算机安装Win

2、98 操作系统,在安装了拨号网络服务器组件后,便可配置为一台拨号网络服务器,供本地计算机通过电话网拨号建立通信连接,并访问远程计算机上的共享资源。在拨号通信链路上可绑定TCP/IP等通信协议,Win98拨号服务器给每个拨入计算机分配一个独立的IP地址,同时也给自身分配一个IP地址,这些IP地址具有相同的网络编号,同属于一个通信子网,服务器的主机编号为1,拨入计算机的主机编号依次从2开始编起。另外,Win98拨号服务器还提供了密码保护功能,拨入计算机只有在提供正确的密码情况下,才能成功建立起拨号连接。当本地计算机要通知远程计算机拨号登录Internet时,首先通过电话拨号和远程计算机建立拨号连接

3、,获取远程计算机分配给本机的IP地址,并经处理得到远程计算机的IP地址,然后,和远程计算机建立TCP/IP连接,并送出命令通知远程计算机准备断开拨号连接,登录Internet,当本地计算机收到远程计算机确认信息后,便可中断和远程计算机的拨号连接,也准备登录Internet。三、获取远程计算机Internet IP地址在取得远程计算机Internet IP地址前,本地计算机是无法通过Internet和远程计算机进行实时通信的。远程计算机登录Internet,获取动态IP地址后,可通过发电子邮件方式将动态IP地址通知本地计算机,也可通过将动态IP地址保存在远程、本地计算机都可访问到的FTP服务器文

4、件中,供本地计算机读取。本文采用后一种方法,若没有合适的FTP服务器,可到提供免费主页空间允许以FTP方式维护的Web站点上申请一块空间,供远程、本地计算机共同访问。本地计算机登录Internet后,用FTP协议读取指定FTP服务器上含有远程计算机动态IP地址的文本文件,从而取得远程计算机的Internet IP地址,然后,本地计算机便可通过Internet和远程计算机启动任何基于TCP/IP连接的通信应用程序,如利用Pcanywhere控制远程计算机,并可通过远程计算机访问与远程计算机相连的整个网络资源,达到对远程计算机系统进行维护的目的。四、通知远程计算机断开Internet连接当本地计算

5、机和远程计算机通信结束后,便可通知远程计算机断开Internet连接。利用远程计算机的Internet IP地址,本地计算机和远程计算机建立TCP/IP连接,送出断开Internet指令,远程计算机收到指令后,回送确认消息,断开Internet连接,等待下一个命令的到来。五、 程序实现本地、远程计算机运行的是同一道程序,通过不同的命令按钮来激活本地、远程计算机程序所具有的不同功能。程序采用VC+6.0编写,在Win98环境下调试运行通过。限于篇幅,下面只给出程序的主要部分及注释说明,并省去了一些出错处理环节。/宏定义#define MAX_PENDING_CONNECTS 2#define N

6、O_FLAGS_SET 0#define MY_MSG_LENGTH 100/全局变量HRASCONN hCon; /RAS连接句柄HWND hWin;HINSTANCE hInst;DWORD ThreadId=0;HANDLE hThread=NULL;char cRemoteIP50; /remote IP地址SOCKET serv_sock,rsock; /服务端/ 建立拨号连接函数,成功返回 TRUE else FALSE/ szEntry 拨号连接名 szPhone 电话号码 szUser和szPassword分别为internet的用户名和口令BOOL StartCon( HWN

7、D hWnd,char * szEntry,char * szUser,char * szPassword,char * szPhone )RASDIALPARAMS rdParams;DWORD dwRet;char szBuf300;rdParams.dwSize = sizeof(RASDIALPARAMS);lstrcpy(rdParams.szEntryName,szEntry);strcpy(rdParams.szPhoneNumber,szPhone);rdParams.szCallbackNumber0 = 0;strcpy(rdParams.szUserName,szUser

8、);strcpy(rdParams.szPassword,szPassword);rdParams.szDomain0 = 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

9、,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=FtpOpenFile(hHost,cFile,GENERIC_WRITE,FTP_TRANSF

10、ER_TYPE_BINARY,0)elsehFile=FtpOpenFile(hHost,cFile,GENERIC_READ,FTP_TRANSFER_TYPE_BINARY,0);if( !hFile)if ( (dwError=GetLastError() = 12003 )ShowMsg(hWin,文件不存在);InternetCloseHandle(hHost);InternetCloseHandle(hInternet);return 0L;if ( cFlag = 0 )InternetWriteFile(hFile,buf,dwLen,&dwLength);elseIntern

11、etReadFile(hFile,buf,dwLen,&dwLength);InternetCloseHandle(hFile);InternetCloseHandle(hHost);InternetCloseHandle(hInternet);return dwLength;/ 通过FTP协议删除FTP服务器上文件的函数cFtpHost 主机地址cFile 文件名BOOL MyFtpDeleteFile(char * cFtpHost,char * cFile)HINTERNET hInternet,hHost;hInternet=InternetOpen(FZYXB,LOCAL_INTER

12、NET_ACCESS,NULL,0,0);hHost=InternetConnect(hInternet,cFtpHost,INTERNET_INVALID_PORT_NUMBER,fzabc,b505, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);FtpDeleteFile(hHost,cFile);InternetCloseHandle(hHost);InternetCloseHandle(hInternet);return TRUE;/ 本地计算机运行线程函数 pp 功能代码void CallThread(void * pp )DWORD

13、* dwId,dwLen, ret,ll;RASPPPIP rip;char szIp50,*pdest;dwId=(DWORD *)pp;switch( * dwId )case IDC_CALL: /通知远程计算机登录InternetShowMsg(hWin,Call remote. );if ( StartCon( hWin,connect,d123,9W7607714 ) = TRUE )ShowMsg(hWin,Remote Connected);/ 取remote 分配的IP地址rip.dwSize=sizeof(RASPPPIP);if ( (ret=RasGetProjecti

14、onInfo(hCon,RASP_PppIp,(LPVOID)&rip,(LPDWORD)&ll ) ) != 0 )ShowMsg(hWin,取IP地址失败);elseShowMsg(hWin,rip.szIpAddress);strcpy(szIp,rip.szIpAddress);pdest=strrchr(szIp,.);*pdest=0;strcat(szIp,.1);ShowMsg(hWin,szIp);SendCmd(szIp,REQUEST);RasHangUp(hCon);elseShowMsg(hWin,Call remote fail);hCon=NULL;break;c

15、ase IDC_INTERNET: /本地计算机登录InternetShowMsg(hWin,正在连接 Internet. );StartCon( hWin,internet,local,aabb99,9W163 );break;case IDC_ADDRESS:/读取远程计算机Internet IP地址ShowMsg(hWin,正在取 IP地址.);if ( (dwLen=FtpWriteRead(,abc.txt,40,cRemoteIP,1)0 )cRemoteIPdwLen=0;ShowMsg(hWin,cRemoteIP);ShowMsg(hWin,删除IP地址文件.);MyFtpD

16、eleteFile(,abc.txt);elseShowMsg(hWin,取IP 失败);break;case IDC_RDISC: /通知远程计算机断开Internet连接ShowMsg(hWin,正在向远端发 Disconnect.);SendCmd(cRemoteIP,DISCONNECT);break;ThreadId=0;hThread=NULL;return;/ 远程计算机运行线程函数void ServerThread(void * pp )RASPPPIP rip;DWORD ret,ll;SOCKADDR_IN acc_sin, dest_sin; /地址int acc_sin

17、_len,status;char szMsg 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,(struct sockaddr FAR *)&dest_sin,sizeof(dest_sin);listen(serv_sock,MAX_PENDING_CONNECTS);while( TRUE )acc_sin_l

18、en = sizeof(acc_sin);ShowMsg(hWin,等待呼叫);rsock = accept( serv_sock,(struct sockaddr FAR *) &acc_sin,(int FAR *) &acc_sin_len );if (rsock 0)ShowMsg(hWin,Accept Error!);break;ShowMsg(hWin,收到连接请求!);status = recv( rsock, szMsg, MY_MSG_LENGTH, NO_FLAGS_SET );if (status = SOCKET_ERROR)ShowMsg(hWin,Recv Err

19、or!);break;if (status)szMsgstatus = 0; ShowMsg(hWin,szMsg);if ( strstr(szMsg,REQUEST) != NULL )isend(rsock,OK,2,0);closesocket(rsock);Sleep(3000);/等待拨号连接退出if (StartCon( hWin,163,remote,abcd,163 ) = TRUE )/取动态分配的IP地址rip.dwSize=sizeof(RASPPPIP);if ( (ret=RasGetProjectionInfo(hCon,RASP_PppIp,(LPVOID)&r

20、ip,(LPDWORD)&ll ) ) != 0 )ShowMsg(hWin,取IP地址失败);break;ShowMsg(hWin,rip.szIpAddress);ShowMsg(hWin, Send IP Adrress. !);FtpWriteRead( ,abc.txt,strlen(rip.szIpAddress),rip.szIpAddress,0);elseShowMsg(hWin,Connect internet fail);/if ( strstr(szMsg,REQUEST) != NULL )if ( strstr(szMsg,DISCONNECT) != NULL )

21、send(rsock,OK,2,0);closesocket(rsock);RasHangUp(hCon); /end if ( strstr(szMsg,DISCONNECT) != NULL ) /end if (status)elseShowMsg(hWin,连接断开! 等待下一个);closesocket(rsock); /end while( TRUE )if(hCon != NULL )RasHangUp(hCon);Sleep(3000);hCon =NULL;closesocket(serv_sock);hThread=NULL;return;/实现本地计算机向远程计算机发送命

22、令的函数 cIp 远程计算机IP地址 SzCmd 命令字符串BOOL SendCmd(char * cIp,char * szCmd)SOCKADDR_IN dest_sin; /地址int status;char szMsg MY_MSG_LENGTH ;rsock = socket(AF_INET,SOCK_STREAM,0);dest_sin.sin_family=AF_INET;dest_sin.sin_addr.s_addr = inet_addr(cIp);dest_sin.sin_port=htons(1023);if (connect( rsock,(PSOCKADDR)&de

23、st_sin,sizeof(dest_sin) )0 )ShowMsg(hWin,连接失败);closesocket( rsock );return FALSE;if ( send(rsock,szCmd,strlen(szCmd),0) != strlen(szCmd)ShowMsg(hWin,送命令失败);closesocket( rsock );return FALSE;status = recv( rsock, szMsg, MY_MSG_LENGTH, NO_FLAGS_SET );if (status = SOCKET_ERROR)ShowMsg(hWin,Recv Error!);closesocket( rsock );return FALSE;szMsgstatus = 0;if ( status != 0 & strstr(szMsg,OK) != NULL )closesocket( rsock );return TRUE;closesocket( rsock );return FALSE;

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

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