gongxun--C#wifi代码和UDP代码

news/2024/5/18 13:17:20 标签: c#, udp, 开发语言
UDP发送端指令源代码:

class Program
{
	private static Socket sock;
	private static IPEndPoint iep1;
	private static byte[] data;
	static void Main(string[] args)
	{
	    string hostName = Dns.GetHostName();//获取本机名
	    IPHostEntry localhost = Dns.GetHostByName(hostName);//获取本机IPv4的地址
	    IPAddress localaddr = localhost.AddressList[0];//本机IP地址

	    //对IP地址进行操作,最后一位拼接为255,做为广播IP地址
	    string strNowIP = localaddr.ToString();
	    string[] strNowIPs = strNowIP.Split('.');
	    string strNewIP = strNowIPs[0] + "." + strNowIPs[1] + "." + strNowIPs[2] + ".255";

	    sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
	    //iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//这个是自带的广播地址,但是地址为255.255.255.255,不能用,屏蔽掉

	    //生成广播地址和端口号,端口号为9050
	    iep1 = new IPEndPoint(IPAddress.Parse(strNewIP), 9050);
	    Console.WriteLine("正式广播地址:" + iep1.Address.ToString() + " 广播端口号:9050");

	    Console.Write("请输入指令,回车进行发送:");
	    string content = Console.ReadLine();
	    Console.WriteLine(content);

	    if (!string.IsNullOrEmpty(content))
	    {
		string hostname = content;// Dns.GetHostName();
		data = Encoding.ASCII.GetBytes(hostname);
		sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);

		//开启一个线程,因为此处广播的需求是一直发送消息,所以为了避免卡死现象,开启线程,BroadcastMessage方法中while循环一直发送指令
		Thread t = new Thread(BroadcastMessage);
		t.Start();
		Console.WriteLine("指令持续发送中....");
	    }
	    else
	    {
		Console.WriteLine("发送指令为空,发送失败,请重新启动发送程序,回车结束");
	    }

	    Console.ReadKey();
	}
	/// <summary>
	/// 线程
	/// </summary>
	private static void BroadcastMessage()
	{
	    while (true)
	    {
		//线程中,死循环不间断的发送指令
		sock.SendTo(data, iep1);
		Thread.Sleep(500);
	    }
	}
}


UDP任务指令接收设置(以ESP8266为例):
1、设置STA模式:AT+CWMODE=12、将通信模块加入热点:AT+CWJAP="GXDS2019","xnsq2019";(竞赛WiFi的SSID为"GXDS2019",密码为"xnsq2019");
3、开启单路连接:AT+CIPMUX=04、作为客户端模式加入指定IP的UDP或者广播域:AT+CIPSTART="UDP","192.168.3.50",9050,9050,2;(IP地址为比赛公布地址,9050表示目标UDP端口,9050表示本地端口,2表示远端可变)。



http://www.niftyadmin.cn/n/1174574.html

相关文章

扫描仪扫描文件处理-Photoshop批处理弹出色阶设置框解决

为什么我录制动作明明设置的有色阶&#xff0c;最后批处理的时候仍然弹出了色阶设置框&#xff1f;出现问题原因可能是你在录入设置色阶动作的时候&#xff0c;是彩色图片或者灰阶中的一种&#xff0c;而批处理的时候遇到了另外一种色彩模式。所以动作中找不到处理这种色彩模式…

老李分享:robotium3.6与4.0 later 的区别

老李分享&#xff1a;robotium3.6与4.0 later 的区别因为下载的直接是最新版本的robotium4.1版&#xff0c;这次碰到gridView问题时&#xff0c;发现网上有getCurrentListViews() 、getCurrentImageViews()等方法。而自己却没有&#xff0c;纳闷了&#xff0c;下载查看了下3.6版…

批量查询数据表的标识值的方法

select o.name as tablename, --表名 a.name as FieldName, -- 字段名 a.isnullable, -- 是否可为空 b.Value as FieldDesc, -- 字段说明 c.name as FieldType, -- 数据类型 COLUMNPROPERTY(a.id,a.name,IsIdentity) as isidentity, --是否标识列 PKcase when exi…

核密度估计原理

核密度估计是在概率论中用来估计未知的密度函数&#xff0c;属于非参数检验方法之一&#xff0c;由Rosenblatt (1955)和Emanuel Parzen(1962)提出&#xff0c;又名Parzen窗&#xff08;Parzen window&#xff09;。 假设我们有n个数X1-Xn,我们要计算某一个数X的概率密度有多大。…

stc89c52,,双PWM

#include <reg52.h>sbit LPWM0 P1^2; sbit LPWM1 P1^3; sbit RPWM0 P1^4; sbit RPWM1 P1^6; unsigned char flag1S0; //全局变量 unsigned int LPwm0Cnt0; unsigned int LPwm1Cnt0; unsigned int LPWM0Set100; unsigned int LPWM1Set100;unsigned int RPwm0Cnt0; uns…

python string类型 bytes类型 bytearray类型

一、python3对文本和二进制数据做了区分。文本是Unicode编码&#xff0c;str类型&#xff0c;用于显示。二进制类型是bytes类型&#xff0c;用于存储和传输。bytes是byte的序列&#xff0c;而str是unicode的序列。 str类型&#xff1a; 1 >>> s u你好 2 >>>…

【Linux】CentOS7 添加常用源

CentOS 的官方源去掉了一些与版权有关的软件,因此想要安装这些软件或者手动下载安装,或者使用其他源. 下面是添加EPEL源和RPMforge源的步骤。 1.首先, 添加源之前要确定系统架构及版本 查看系统版本: [sxdbogon ~]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Co…

英文论文审稿

转&#xff1a;http://blog.csdn.net/chenyusiyuan/archive/2008/12/03/3437577.aspx 转自‘海岩秋沙’的QQ空间&#xff1a; 以下是从一个朋友转载来的&#xff0c;关于英文投稿过程中编辑给出的意见。与大家一起分享。 以下12点无轻重主次之分。每一点内容由总结性标题和代…