Windows—RAW编程

news2024/9/29 13:21:17

客服端骨架:

#include <iostream>
#include <WinSock2.h>
#pragma  comment(lib,"ws2_32.lib")

int main()
{
	WORD wVersionRequested = MAKEWORD(2, 2);
	WSADATA lpWSAData;
	WSAStartup(wVersionRequested, &lpWSAData);

	SOCKADDR_IN saddr{ 0 };
	saddr.sin_family = AF_INET;
	saddr.sin_port = htons(55555);
	saddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

	SOCKET sRet = socket(AF_INET, SOCK_DGRAM, 0);

	char opt= 0;
	setsockopt(sRet, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

	char buffer[0x1000]{ 0 };
	while (true)
	{
		scanf_s("%s", buffer, sizeof(buffer));
		sendto(sRet, buffer, sizeof(buffer), 0, (PSOCKADDR)&saddr, sizeof(saddr));
	}
	closesocket(sRet);
	WSACleanup();
	system("pause");
	return 0;
}

服务端骨架:

#include <iostream>
#include <WinSock2.h>
#pragma  comment(lib,"ws2_32.lib")

//IP协议头 20字节
typedef struct _IP_HEADER
{
	//版本信息(前四位)/头长度(后四位)
	 struct cVersionAndHeaderLen
	{
		UCHAR Version : 4;
		UCHAR HeaderLen : 4;
	}cVersionAndHeaderLen;
	//服务类型
	char cTypeOfService;
	//数据包长度
	short sTotalLenOfPacket;
	//数据报ID
	short sPacketID;
	//分片信息
	short sSliceinfp;
	//存活时间
	char cTTL;
	//协议类型
	char cTypeOfProtolol;
	//校验和
	short sCheckSum;
	//源IP
	unsigned int uiSourIP;
	//目的IP
	unsigned int uiDestIP;
}IP_HEADER, *PIP_HEADER;

//UDP协议头 8字节
typedef struct _UDP_HEADER
{
	//源端口号
	unsigned short usSourPort;
	//目的端口号
	unsigned short usDestPort;
	//数据包长度
	unsigned short usLength;
	//校验和
	unsigned short usCheckSum;
}UDP_HEADER, *PUDP_HEADER;

int main()
{
	WORD wVersionRequested = MAKEWORD(2,2);
	WSADATA lpWSAData;
	WSAStartup(wVersionRequested, &lpWSAData);

	SOCKADDR_IN saddr{ 0 };
	saddr.sin_family = AF_INET;
	saddr.sin_port = htons(55555);
	saddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

	SOCKET sRet = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);

	char opt = 0;
	setsockopt(sRet, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

	bind(sRet, (PSOCKADDR)&saddr, sizeof(saddr));

	char buffer[0x5000]{ 0 };
	sockaddr from{ 0 };
	int len = sizeof(from);
	IP_HEADER ih{ 0 };
	UDP_HEADER uh{ 0 };
	char cTemp = 0;
	while (true)
	{
		recvfrom(sRet, buffer, sizeof(buffer), 0, &from, &len);
		memcpy(&ih, buffer, 1);
		if (ih.cVersionAndHeaderLen.HeaderLen < 5)//有可能小于标准20字节
		{
			cTemp = 5 - ih.cVersionAndHeaderLen.HeaderLen + ih.cVersionAndHeaderLen.HeaderLen;
		}
		memcpy(&ih, buffer, (cTemp * 4));
		memcpy(&uh, buffer + (cTemp * 4), 8);
		in_addr  ias, iad;
		ias.S_un.S_addr = ih.uiSourIP;
		iad.S_un.S_addr = ih.uiDestIP;
		printf("源IP:%s\t端口:%d\n", inet_ntoa(ias), ntohs(uh.usSourPort));
		printf("目IP:%s\t端口:%d\n", inet_ntoa(iad), ntohs(uh.usDestPort));
		printf("数据:%s\n\n", buffer + (cTemp * 4) + 8);
		
	}
	closesocket(sRet);
	WSACleanup();
    system("pause");
    return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在没有密码的情况下解锁iPhone?

如果您的 iPhone 被锁定&#xff0c;知道如何在没有密码的情况下解锁它会派上用场。有几种方法可以帮助您重新使用无价的小工具&#xff0c;无论您是忘记了密码&#xff0c;还是现在只想使用手机。这篇博客文章将讨论在 iPhone 上设置密码的价值、忘记密码的典型原因以及在没有…

什么是DDOS攻击?DDOS攻击一小时多少钱?DDOS攻击如何防御?

什么是DDOS攻击? 拒绝服务攻击&#xff08;DDOS&#xff09;亦称洪水攻击&#xff0c;是一种网络攻击手法&#xff0c;其目的在于使目标计算机的网络或系统资源耗尽&#xff0c;使服务暂时中断或停止&#xff0c;导致其正常用户无法访问。当黑客使用网络上两个或以上被攻陷的计…

AWK的高级用法、三剑客总结

1、定义引用变量 -v:声明变量 案例一: 将系统的变量a,在awk里赋值为变量b,然后调用变量b -v 选项将其传递给 awk直接调用的话需要先用双引号再用单引号awk直接定义变量并引用调用函数getline,读取一行数据的时候并不是得到当前行而是当前行的下一行打印整个行面下面含有ro…

mp4怎么转换成mp3?看了就会的8种mp4转mp3方法!

mp4怎么转换成mp3&#xff1f;MP4作为广泛应用的视频格式&#xff0c;在日常娱乐与工作中扮演着重要角色&#xff0c;但它在特定情境下也带来了一些不便&#xff0c;你是否曾遇到过这样的困扰&#xff0c;当视频内容中的画面并非焦点&#xff0c;而你只对其中的音频感兴趣时&am…

鸿蒙Harmony编程开发:服务端证书锁定防范中间人攻击示例

1. TLS通讯中间人攻击及防范简介 TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任&#xff0c;如果CA证书签发机构被入侵&#xff0c;或者设备内置证书被篡改&#xff0c;都会导致TLS握手环节面临中间人攻击的风险。其实&#xff0c;这种风险被善意利用的情况还是很…

EasyCVR视频汇聚技术赋能智慧煤矿:车载设备接入方案助力实时监控与远程监管

在煤矿行业&#xff0c;智慧化转型已成为提升生产效率、保障安全的重要途径。随着物联网、大数据、云计算等技术的快速发展&#xff0c;智慧煤矿建设逐步深入&#xff0c;车载设备作为煤矿生产的重要一环&#xff0c;其接入智慧管理系统显得尤为重要。本文将详细介绍智慧煤矿车…

软件开发整体介绍

软件开发流程 需求分析&#xff1a;需求规格说明书&#xff08;一般以word文档的形式&#xff09;、产品原型&#xff08;静态页面展示出来&#xff09;设计&#xff1a;UI设计、数据库设计、接口设计编码&#xff1a;项目代码、单元测试测试&#xff1a;测试用例、测试报告上…

滚雪球学Java(89):Java GUI入门与进阶:AWT核心概念深度解析,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&#…

html文件运行后界面反馈xxx拒绝连接

概述&#xff1a;我的html代码中包含了外站界面&#xff0c;运行后界面反馈到xxx拒绝连接&#xff0c;我尝试了网上的诸多方法&#xff0c;例如换一个浏览器运行&#xff0c;修改主机网络设置&#xff0c;更改浏览器DNS都没有作用。 <!DOCTYPE html> <html> <h…

html+css+js网页设计 电商 翡翠钻石电商网站10个页面

htmlcssjs网页设计 电商 翡翠钻石电商网站10个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源…

华为录音删除怎么恢复?教你几招轻松找回重要录音

在日常生活中&#xff0c;我们经常会使用华为手机进行通话录音或录制一些重要的会议内容。然而&#xff0c;有时不小心删除了这些录音文件&#xff0c;可能会带来不小的麻烦。那么&#xff0c;华为录音删除后该如何恢复呢&#xff1f;本文将为你详细介绍几种实用的恢复方法&…

红黑树的插入

目录 一、红黑树 二、红黑树节点的定义 三、红黑树的插入 3.1按照二叉搜索的树规则插入新节点 3.2检测新节点插入后红黑树的情况 3.3红黑树插入代码总体实现 四、红黑树的验证 五、红黑树和AVL树的比较 一、红黑树 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在…

如何申请开通商家转账到零钱【成功经验分享】

商家转账到零钱功能是微信支付为商户提供的一项便捷服务&#xff0c;允许商户直接将资金转入用户的微信钱包。鉴于很多商户在申请商家转账到零钱时被过时的、错误的经验文章所误导&#xff0c;以我们上万次成功开通商家转账到零钱功能的经验整理这篇文章&#xff0c;希望能对新…

整套厨帽检测算法样本、模型、源码和厨帽算法识别应用方案介绍

厨帽检测算法的应用方案主要涉及技术选型、硬件配置、软件集成、部署与监控以及应对实际挑战等多个方面。以下是一个详细的应用方案概述&#xff1a; 一、技术选型 深度学习技术&#xff1a;厨帽检测算法主要基于深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&…

OpenCV几何图像变换(10)透视变换函数warpPerspective()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 warpPerspective 函数使用指定的矩阵对源图像进行透视变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x M 32 y M 33 , M…

信息流产品场景及数据指标体系

一、信息流产品的场景 我们分别从用户、内容生产者和平台的角度&#xff0c;描述他们在信息流产品里的消费场景&#xff0c;便于理解阐述的指标体系。 1、用户在信息流产品里的消费的场景 小明同学&#xff0c;每天打开 5 次 App&#xff0c;刷新内容 20 次&#xff0c;浏览了…

高性能、可扩展、支持二次开发的java版本企业电子招标采购系统源码

在数字化时代&#xff0c;企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台&#xff0c;涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…

苹果手机如何恢复微信好友?更新6个方法,快来收藏!

场景一&#xff1a;想查看某个好友的朋友圈&#xff0c;却不小心点击了删除好友。 场景二&#xff1a;与好友吵架了&#xff0c;一气之下删了好友&#xff0c;却不知如何重新恢复好友。 …… …… 除了上述的两种场景之外&#xff0c;我们可能还会因为其他的原因与好友失去微…

LLM - 从头开始实现 LLaMA3 的网络结构与推理流程 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141462669 LLaMA3 是 Meta 的最新大语言模型&#xff0c;在整体网络设计进行多项升级&#xff0c;显著提升了模型的性能和效率&#xff0c;重要的…

AMEYA360:上海雷卯MOSFET器件参数:TJ、TA、TC到底讲啥?

近日&#xff0c;经常被问及MOSFET器件的参数计算问题。在本文中&#xff0c;AMEYA360将分享关于MOSFET中几个关键温度参数的计算方法&#xff1a;TJ(结温)、TA(环境温度)和TC(外壳温度)。 1. MOSFET温度参数的重要性 在电力电子应用中&#xff0c;温度是影响MOSFET性能和寿命的…