Windows下使用C语言的周期UDP编程同时发送和接收网络调试助手数据

2023-05-16

代码:

#include <Windows.h>                //需要包含该头文件
#include <stdio.h>
 
#pragma comment(lib,"Winmm.lib")	//For timeSetEvent

#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")  //加载 ws2_32.dll

unsigned short  port[8] = {1234,1235,1236,1237,1238,1239,1240,1241};

void sndData(int channel, char* data, int len)
{
	printf("我是第一个周期函数,周期为1s\n");
	WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    //创建套接字
    SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
    
	//本机地址信息
	struct sockaddr_in thisAddr;
    memset(&thisAddr, 0, sizeof(thisAddr));  //每个字节都用0填充
    thisAddr.sin_family = PF_INET;
    thisAddr.sin_addr.s_addr = inet_addr("172.24.64.1");//这个ip要改换成自动获取本机ip 
    thisAddr.sin_port = htons(2345);//端口号就作为通道信息来进行配置 
    bind(sock, (SOCKADDR*)&thisAddr, sizeof(SOCKADDR));
	
    struct sockaddr_in servAddr;
    memset(&servAddr, 0, sizeof(servAddr));  //每个字节都用0填充
    servAddr.sin_family = PF_INET;
    servAddr.sin_addr.s_addr = inet_addr("172.24.64.1");//这个ip要改换成自动获取本机ip 
    servAddr.sin_port = htons(1234);//端口号就作为通道信息来进行配置 
    
    sendto(sock, data, len, 0, (struct sockaddr*)&servAddr, sizeof(servAddr));
    closesocket(sock);
}

void revData(int channel, char* buffer, int len) 
{
	WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    //创建套接字
    SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
    //服务器地址信息
    struct sockaddr_in thisAddr;
    memset(&thisAddr, 0, sizeof(thisAddr));  //每个字节都用0填充
    thisAddr.sin_family = PF_INET;
    thisAddr.sin_addr.s_addr = inet_addr("172.24.64.1");//这个ip要改换成自动获取本机ip 
    thisAddr.sin_port = htons(2345);//端口号就作为通道信息来进行配置 
    bind(sock, (SOCKADDR*)&thisAddr, sizeof(SOCKADDR));
    
    struct sockaddr_in servAddr;
    int addrLen = sizeof(servAddr);
	int dataLen = recvfrom(sock, buffer, len, 0, (struct sockaddr*)&servAddr, &addrLen);
	printf("dataLen%d\n", dataLen);
	closesocket(sock);
}
 
//定时器1的回调函数
void WINAPI TimerCallback1(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
{
	char data[128];
	for (int i = 0; i < 128; i++)
		data[i] = i;	
		
	sndData(0, data, 128);
	
	char buffer[128];
	revData(0, buffer, 128);
	
	for (int i = 0; i < 128; i++)
		printf("buffer:%d\n", buffer[i]);
}

//定时器2的回调函数
void WINAPI TimerCallback2(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
{
	WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    //创建套接字
    SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);
    //服务器地址信息
    struct sockaddr_in servAddr;
    memset(&servAddr, 0, sizeof(servAddr));  //每个字节都用0填充
    servAddr.sin_family = PF_INET;
    servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    servAddr.sin_port = htons(2345);
	printf("我是第二个周期函数,周期为2s\n");
	char buffer[100] = "xky";
    sendto(sock, buffer, strlen(buffer), 0, (struct sockaddr*)&servAddr, sizeof(servAddr));
	
}
 
int main()
{
	DWORD_PTR dwUser = NULL;
 
    // 设置定时器
	int timerID1 = timeSetEvent(1000, 1, (LPTIMECALLBACK)TimerCallback1, dwUser, TIME_PERIODIC);    
	if(timerID1 != NULL)
		printf("定时器1创建成功\n");
	
	int timerID2 = timeSetEvent(2000, 1, (LPTIMECALLBACK)TimerCallback2, dwUser, TIME_PERIODIC);    
	if(timerID2 != NULL)
		printf("定时器2创建成功\n");	
	
	while(1)
	{
		;
	}
	timeKillEvent(timerID1);    //关闭定时器1
	timeKillEvent(timerID2);    //关闭定时器2
	return 0;
}

网络调试助手设置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnmSEoCr-1671624276748)(C:\Users\10521\AppData\Roaming\Typora\typora-user-images\image-20221221200357897.png)]

运行代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPUYxSgc-1671624276749)(C:\Users\10521\AppData\Roaming\Typora\typora-user-images\image-20221221200422454.png)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows下使用C语言的周期UDP编程同时发送和接收网络调试助手数据 的相关文章

随机推荐

  • Windows下的TCP/UDP网络调试工具-NetAssist以及Linux下的nc网络调试工具

    已剪辑自 https blog csdn net ccf19881030 article details 109370384 一 Windows下的网络调试工具 NetAssist 1 TCP服务端和客户端测试2 UDP服务端和客户端测试
  • 软件产品化

    1 产品化定义 xff1a 软件产品化是指客户无需为软件添加或调整代码和语句即能完成软件的安装配置 应用初始化 系统管理 用户使用的全过程 xff0c 并且软件至少能满足80 以上的用户某一组应用需求 微软Office或杀毒软件就是产品化软
  • 使用Dev C++进行Windows socket网络编程,需链接lws2_32库

    背景 在我们使用Dev C 43 43 进行C语言编程时 xff0c 如果我们引入的库是C语言标准库 xff0c 那我们是不要在编译器选项中进行额外的设置的 xff0c 但是如果我们使用的是一些不是C语言标准库 xff0c 那我们可能就需要
  • Windows下C语言程序和网络调试助手通信

    网络调试助手之间进行UDP通信 前面一篇文章介绍了Windows下的网络调试助手 xff0c 文章链接如下 xff1a Windows下的TCP UDP网络调试工具 NetAssist以及Linux下的nc网络调试工具 下面我们简单介绍一下
  • 为什么char a[]的a不能用a=“hello”来赋值?

    问题 char b里面的b是一个指向char的指针 xff0c 而b可以用b 61 hello 来复制 同样 xff0c a代表char数组的第一个元素的指针 xff0c 类型应该也是char xff0c 为什么b可以直接用赋值符号而a不可
  • Windows下使用C语言创建定时器并周期和网络调试助手通信

    在Windows C下采用timeSetEvent函数来设置定时器 关于timeSetEvent的函数原型及注释如下所示 xff1a MMRESULT span class token function timeSetEvent span
  • GCC编译程序如何减少堆栈空间的大小?

    1 静态堆空间的大小是编译期可以根据你的全局变量 静态变量尺寸算出来的 因此减少后者的长度可以减少你使用堆空间 2 MCU裸片程序 xff0c 很多环境是不方便 xff0c 不支持 xff0c 不鼓励使用malloc函数的 xff0c 裸环
  • 腾讯毕业十多年了

    已剪辑自 https mp weixin qq com s rb5aeIDQ5 qtifeoeIrqZw 昨天一个腾讯前同事加了我的微信找我聊天 xff0c 说是在网上看见我写的文章想起我了 这个同事印象中很沉默寡言的 xff0c 在腾讯除
  • ARM9和STM32什么关系?

    已剪辑自 https mp weixin qq com s QHARY D2SwFoQbFsJoCNlg 有小伙伴问 xff1a ARM9和STM32什么关系 xff1f 如果时间倒退10年 xff0c ARM9 s3c2410还算是比较流
  • 汽车ECU通信相关验证项有哪些?

    已剪辑自 https mp weixin qq com s fIAXkS37r6jvnuA7yIQDA 汽车电子的高速发展决定了基础软件所面临的要求将会更加严格 xff0c 其要求会覆盖软件的安全性 稳定性 可扩展性等方方面面 为了提高软件
  • 不可忽视的 C 语言陷阱!

    已剪辑自 https mp weixin qq com s bdGuOjz1Cg3YXHwlVh5ZlA 语言是编程的基石 xff0c C语言诡异且有种种陷阱和缺陷 xff0c 需要程序员多年历练才能达到较为完善的地步 虽然有众多书籍 杂志
  • 程序员能纯靠技术渡过中年危机吗?

    首先说答案 xff0c 能 xff01 程序员可以靠技术渡过中年危机 xff0c 但是要转变线性思维 先说说个人情况 xff0c 80后 xff0c 从事电机控制软件开发十余年 xff0c 属于制造业 xff0c 算嵌入式的一个小分支 xf
  • STM32学习(一)

    单片机基础 CISC和RISC举例 冯 诺依曼结构VS哈佛结构 冯 诺依曼结构数据和程序存储在同一存储器中 xff0c 访问数据时不能访问程序 xff0c 访问程序时不能访问数据 xff0c 属于分时复用 xff0c 同一时间只能读取其中一
  • C语言既然可以自动为变量分配内存,为什么还要用动态分配内存呢?

    已剪辑自 https mp weixin qq com s NRyM5KAm jrBImmkA2WYSA 不知道大家在学习C语言动态分配内存的时候 xff0c 有没有过这样的疑问 xff1a 既然系统可以自动帮我们分配内存 xff0c 为什
  • 分享一种通信协议的应用编程原理和思路

    已剪辑自 https mp weixin qq com s wy flva6pCNqHV3ObeLPCQ 嵌入式开发过程中 xff0c UART CAN USB等通信基本离不开通信协议 下面给大家分享一种通信协议 xff08 MAVLink
  • 一名智能驾驶产品经理的自我修养

    已剪辑自 https mp weixin qq com s fCSO7hmP3FP Xat NyFG0A 随着智能驾驶浪潮的兴起 xff0c 市场上产生了对相关人才的大量需求 xff0c 也诞生了一些传统汽车行业所没有的新兴岗位 其中 xf
  • 7个硬核嵌入式C进阶要点!

    已剪辑自 https mp weixin qq com s 2MLAK9JB oyLhc6HiXH2ww void表示的是无类型 xff0c 不可以采用这个类型声明变量或常量 xff0c 但是可以把指针定义为void类型 xff0c 如vo
  • 嵌入式软件分层框架设计,举了个例子

    文章目录 前言一 框架分层是什么 xff1f 二 框架分层的优劣势1 优势2 劣势 三 一个简单的例子四 总结 已剪辑自 https mp weixin qq com s m Q PaC0XlPSeoWrxIstg 前言 为了能够使得产品得
  • Windows下使用C语言的UDP编程接收网络调试助手发送的数据

    代码 span class token macro property span class token directive hash span span class token directive keyword include span
  • Windows下使用C语言的周期UDP编程同时发送和接收网络调试助手数据

    代码 xff1a span class token macro property span class token directive hash span span class token directive keyword include