// 本 地 计 算 机 运 行 线 程 函 数 pp 功 能 代 码 void CallThread(void * pp ) { DWORD * dwId,dwLen, ret,ll; RASPPPIP rip; char szIp[50], *pdest; dwId=(DWORD *)pp; switch( * dwId ) { case IDC_CALL: // 通 知 远 程 计 算 机 登 录Internet ShowMsg(hWin,“Call remote... "); if ( StartCon( hWin,“connect",“", “d123",“9W7607714" ) == TRUE ) { ShowMsg(hWin,“Remote Connected"); // 取remote 分 配 的IP 地 址 rip.dwSize=sizeof(RASPPPIP); if ( (ret=RasGetProjectionInfo(hCon,RASP_PppIp, (LPVOID) &rip,(LPDWORD) &ll ) ) != 0 ) ShowMsg(hWin,“ 取IP 地 址 失 败"); else { ShowMsg(hWin,rip.szIpAddress); strcpy(szIp,rip.szIpAddress); pdest=strrchr(szIp,‘.'); *pdest=‘/0';strcat(szIp,“.1"); ShowMsg(hWin,szIp); SendCmd(szIp,“REQUEST"); } RasHangUp(hCon); } else ShowMsg(hWin,“Call remote fail"); hCon=NULL; break; case IDC_INTERNET: // 本 地 计 算 机 登 录Internet ShowMsg(hWin,“ 正 在 连 接 Internet... "); StartCon( hWin,“internet",“local@pub2.fz.fj.cn", “aabb99",“9W163" ); break; case IDC_ADDRESS: // 读 取 远 程 计 算 机Internet IP 地 址 ShowMsg(hWin,“ 正 在 取 IP 地 址..."); if ( (dwLen=FtpWriteRead(“ftp.maoming.gd.cn", “abc.txt",40,cRemoteIP,1))>0 ) { cRemoteIP[dwLen]=‘/0';ShowMsg(hWin,cRemoteIP); ShowMsg(hWin,“ 删 除IP 地 址 文 件.."); MyFtpDeleteFile(“ftp.maoming.gd.cn",“abc.txt"); } else ShowMsg(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_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_len = 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 Error!");break;} if (status) { szMsg[status] = ‘/0'; ShowMsg(hWin,szMsg); if ( strstr(szMsg,“REQUEST") != NULL ) { isend(rsock,“OK",2,0); closesocket(rsock);Sleep(3000); // 等 待 拨 号 连 接 退 出 if (StartCon( hWin,“163",“remote@pub2.fz.fj.cn", “abcd",“163" ) == TRUE ) { // 取 动 态 分 配 的IP 地 址 rip.dwSize=sizeof(RASPPPIP); if ( (ret=RasGetProjectionInfo(hCon,RASP_PppIp, (LPVOID) &rip,(LPDWORD) &ll ) ) != 0 ) {ShowMsg(hWin,“ 取IP 地 址 失 败");break;} ShowMsg(hWin,rip.szIpAddress);ShowMsg(hWin, “ Send IP Adrress.... !"); FtpWriteRead( “ftp.maoming.gd.cn",“abc.txt", strlen(rip.szIpAddress),rip.szIpAddress,0); } else {ShowMsg(hWin,“Connect internet fail");} }//if ( strstr(szMsg,“REQUEST") != NULL ) if ( strstr(szMsg,“DISCONNECT") != NULL ) { send(rsock,“OK",2,0); closesocket(rsock);RasHangUp(hCon); } //end if ( strstr(szMsg,“DISCONNECT") != NULL ) } //end if (status) else {ShowMsg(hWin,“ 连 接 断 开! 等 待 下 一 个"); closesocket(rsock);} } //end while( TRUE ) if(hCon != NULL ) {RasHangUp(hCon);Sleep(3000);} hCon =NULL;closesocket(serv_sock);hThread=NULL; return; } // 实 现 本 地 计 算 机 向 远 程 计 算 机 发 送 命 令 的 函 数 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) &dest_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;} szMsg[status] = ‘/0'; if ( status != 0 & & strstr(szMsg,“OK") != NULL ) {closesocket( rsock );return TRUE;} closesocket( rsock );return FALSE; } 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |