⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testappapi.cpp

📁 实现应用层直接向MAC层发送数据
💻 CPP
字号:
// testAPPAPI.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "WinSock.h "
#include "stdio.h "
#include "mac_api.h "
#include "string.h"

int _tmain(int argc, _TCHAR* argv[])
{
	WSADATA wsaData;                                         //指向WinSocket信息结构的指针    
	SOCKET  sk;          

	//加载套接字库,进行套接字库版本协商
	if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)       
	{       
		printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1       
		return -1;       
	}
	else
		printf("The maximum datagram message size is:%d\n",wsaData.iMaxUdpDg);

	//创建套接字
	sk=socket(AF_INET,SOCK_DGRAM,0); 
	if (sk==INVALID_SOCKET)
	{
		printf("Can't set up socket.\n");//初始化失败返回-1
		WSACleanup();
		return -1;
	}

	//建立用于监听的套接字地址、端口信息
	SOCKADDR_IN RecvAddr;    
	RecvAddr.sin_family=AF_INET;       
	RecvAddr.sin_port=htons(1500);//使用的端口,可以根据需要更改    
	RecvAddr.sin_addr.s_addr=inet_addr("192.168.1.4"); //主机IP地址

	//绑定套接字
	if(bind(sk,(struct sockaddr *)&RecvAddr,sizeof(RecvAddr))!=0)       
	{       
		printf("Can't bind socket to local port!Program stop:\n");//初始化失败返回-1       
		return -1; 
	}

	//接收数据函数参数设置
	SOCKADDR_IN SendAddr;
	char RecvBuff[10240];
	int Size = sizeof(SendAddr);
	//发送数据函数参数设置
	SOCKADDR_IN VLCAddr;
	VLCAddr.sin_family=AF_INET;
	VLCAddr.sin_port=htons(1234);//转发到接收地址的端口
	VLCAddr.sin_addr.s_addr=inet_addr("192.168.1.4");//将接收缓冲区内的数据发送到该地址
	int VSize = sizeof(VLCAddr);

	//接收数据并转发给指定IP的端口
	while(1)
	{

		if(recvfrom(sk,RecvBuff,10240,0,(struct sockaddr *)&SendAddr,&Size)==SOCKET_ERROR)       
		{       
			printf("Recive Error:%d",WSAGetLastError());       
			break;       
		} 
		else
			printf("%d\n",recvfrom);

		uint8_t *cTemp =RecvBuff;
		uint32_t nLen = strlen(cTemp);
		int reslut=SendMessageToMAC(cTemp, nLen);
		printf("Message sent to MAC layer: %s\n", cTemp);
		/*if(sendto (sk,RecvBuff,10240,0,(struct sockaddr *)&VLCAddr,sizeof(VLCAddr))==SOCKET_ERROR)
		{
		printf("Send Error:%d",WSAGetLastError());  
		break;
		}
		else
		printf("%d\n",sendto);*/
	} 
	return 0;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -