(C#)关于UDP协议解析收到的数据包后如何通过手动发送信息返回客户端
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace UDP
{
class Program
{
private byte[] data;
public static string OX23 { get; private set; }
public static object Private { get; private set; }
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
//得到本机IP,设置TCP端口号
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("120.76.202.110"), 8001);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//绑定网络地址
newsock.Bind(ip);
Console.WriteLine("This is a Server, host name is {0}", Dns.GetHostName());
//等待客户机连接
Console.WriteLine("Waiting for a client");
//得到客户机IP
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 8900);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}: ", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
//客户机连接成功后,发送信息
string welcome = "你好 ! ";
//字符串与字节数组相互转换
data = Encoding.ASCII.GetBytes(welcome);
//发送信息
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
//发送接受信息
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
int[] s = new int[10];
for (int i = 0; i < 10; i++)
{
s[i] = data[i];
}
if ((s[0] == 0x48) && (s[1] == 0x46) && (s[2] == 0x55) && (s[3] == 0x54) && (s[9] == 0x23))
{
Console.WriteLine("接收到正确的数据包");
Console.WriteLine("功能码是" + s[5]);
Console.WriteLine("调光等级" + s[7]);
Console.WriteLine("定时数为: " + s[8]);
if (s[4] == 0x00)
{
Console.WriteLine("接入1号设备");
}
else if (s[4] == 0x01)
{
Console.WriteLine("接入2号设备");
}
else
{
Console.WriteLine("接入3号设备");
}
if (s[6] == 0x00)
{
Console.WriteLine("关闭开关");
}
else
{
Console.WriteLine("闭合开关");
}
}
else
{
Console.WriteLine("数据包错误");
}
}
}
}
} (数据包的格式为“HFUT+地址+功能码+开关+调光系数+定时数+#”返回要求开关状态与接收到的相反,调光系数变大,请问该如何改程序,谢谢)