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

📄 udp.cpp

📁 UDP 通讯问题 需要学习的朋友不能错过
💻 CPP
字号:
// UDP.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "winsock.h"   
#pragma comment(lib,"Ws2_32")
#include "windows.h"   
#include "process.h" 

char reg_plc_data[12];
	 int  skfd;  
	 WSADATA wsaD; 
     struct sockaddr_in recv_addr,send_addr; 
	 int result;

void RecData(PVOID);

int main(int argc, char* argv[])
{
	/* int  skfd;  
	 WSADATA wsaD; 
     struct sockaddr_in recv_addr,send_addr;  
	 int result;*/
	 HANDLE hThread;
	 char *str;
	 DWORD dwThread;
	 char *netaddrIP;

	netaddrIP = "192.168.0.47";
	
	 memset(&recv_addr,0,sizeof(recv_addr));
		recv_addr.sin_family = AF_INET;						//配置端口IP
			recv_addr.sin_addr.s_addr = INADDR_ANY;  
			//	recv_addr.sin_addr.s_addr = inet_addr("192.168.0.36");
				recv_addr.sin_port = htons(3550); 

	 memset(&send_addr,0,sizeof(send_addr));
		 send_addr.sin_family = AF_INET;					//配置IP端口
			 send_addr.sin_addr.s_addr = inet_addr(netaddrIP);  
				 send_addr.sin_port = htons(2330); 

	  //发送数据的初始化
	//str_Protocol[3-1] = MOLNO	;				//发送给PLC的通讯协议
	//str_Protocol[4-1] = 4	;
	//str_Protocol[5-1] = OffSet % 0x100	;
	//str_Protocol[6-1] = OffSet / 0x100	;
	//str_Protocol[7-1] = Size % 0x100	;
	//str_Protocol[8-1] = Size / 0x100		;
 
	 result = WSAStartup((WORD)(1<<8|1),&wsaD);			//初始化WinSocket动态连接库; 
	 if (result == 0)
	{
		reg_plc_data[101] = 1;				
	}

   	 skfd = socket(PF_INET,SOCK_DGRAM,0);  
	if(skfd<0)  
	{		
		 printf("socket create failed\n");  
	}  

	if(bind(skfd,(struct sockaddr *)&recv_addr,sizeof(recv_addr))<0)  
			printf("1\n");  
	//数据发送
	 
	//Sleep(100);	

//	*status = TOOLKIT_SUCCESS;
//	 MessageBox(NULL,"Hello world","Hello",MB_OK);
//	hThread = CreateThread(NULL,0,RecData,NULL,0,&dwThread);
	 _beginthread(RecData,0,NULL);
	if (hThread == NULL)
	printf("RecData create failed\n");  
	
//RecData(&dwThread);
//	printf("%c\n",str);
	printf("%s\n",reg_plc_data);
	Sleep(600000);
	CloseHandle(hThread);
	return 0;
}

void RecData(PVOID param)
{//	BYTE  RecvData[1000];
	int i;
	int nstatus;
	int len; 
	char strsend[9];
	strsend[0] = 0xff;
		strsend[1] = 0x00;
			strsend[2] = 0x00;
				strsend[3] = 0x0E;
					strsend[4] = 0x04;
						strsend[5] = 0x64;
							strsend[6] = 0x00;
								strsend[7] = 0x50;
									strsend[8] = 0x00;

  	/*int skfd;  
     
	WSADATA wsaD; 
    struct sockaddr_in  recv_addr;  
	int result;*/
	char str;

//	printf("1\n");  
/*	memset(&recv_addr,0,sizeof(recv_addr));
		recv_addr.sin_family = AF_INET;						//配置端口IP
			recv_addr.sin_addr.s_addr = INADDR_ANY;  
				recv_addr.sin_port = htons(3550); 

	result = WSAStartup((WORD)(1<<8|1),&wsaD);			    //初始化WinSocket动态连接库; 
//	if (result == 0)
//	{
//		reg_plc_data[101] = 1;				
//	}

 
	skfd = socket(PF_INET,SOCK_DGRAM,0);  
	if(skfd<0)  
	{		
		printf("socket create failed\n");  
	}

	if(bind(skfd,(struct sockaddr *)&recv_addr,sizeof(recv_addr))<0)  
		printf("1\n");  
	*/
	
	while(TRUE)  
	{  
	 len = sizeof(recv_addr);  
	//	sendto(skfd,strsend,9,0,(struct sockaddr *)&send_addr,sizeof(send_addr));  
	 sendto(skfd,"1234567890",10,0,(struct sockaddr *)&send_addr,sizeof(send_addr));  
		if(recvfrom(skfd,reg_plc_data,sizeof(reg_plc_data),0,(struct sockaddr *)&recv_addr,&len)<0) 
		printf("2\n");
		//MessageBox(NULL,"Hello world",NULL,12);}
	    else  
			printf("%s\n",reg_plc_data);
         Sleep(100);
	} 
_endthread(); 	
	return ;
}

⌨️ 快捷键说明

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