定义了一个结构
struct tagMonitorMessage
{
public ulong m_message_length;
char[] key;
char m_system;
char m_command;
char[] monitor_content;
char[] reserver;
}
用UDP传输这个结构的信息,应该怎样改下面的代码?
发送端
private void button1_Click(object sender, EventArgs e)
{
tagMonitorMessage mm = new tagMonitorMessage();
mm.m_message_length = 1223112; Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse(this.textBox2.Text.ToString());
byte[] sendbuf = Encoding.GetEncoding("gb2312").GetBytes(this.textBox1.Text.ToString());
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
s.SendTo(sendbuf, ep);
} 接收端
private void StartListener()
{
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);
string strIP;
strIP = "信息来源" + groupEP.Address.ToString();
string strInfo = Encoding.GetEncoding("gb2312").GetString(bytes, 0, bytes.Length);
MessageBox.Show(strInfo, strIP);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}
struct tagMonitorMessage
{
public ulong m_message_length;
char[] key;
char m_system;
char m_command;
char[] monitor_content;
char[] reserver;
}
用UDP传输这个结构的信息,应该怎样改下面的代码?
发送端
private void button1_Click(object sender, EventArgs e)
{
tagMonitorMessage mm = new tagMonitorMessage();
mm.m_message_length = 1223112; Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse(this.textBox2.Text.ToString());
byte[] sendbuf = Encoding.GetEncoding("gb2312").GetBytes(this.textBox1.Text.ToString());
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
s.SendTo(sendbuf, ep);
} 接收端
private void StartListener()
{
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);
string strIP;
strIP = "信息来源" + groupEP.Address.ToString();
string strInfo = Encoding.GetEncoding("gb2312").GetString(bytes, 0, bytes.Length);
MessageBox.Show(strInfo, strIP);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}
[Serializable]
public struct tagMonitorMessage
{
public ulong m_message_length;
public char[] key;
public char m_system;
public char m_command;
public char[] monitor_content;
public char[] reserver; public static byte[] Serialize(object obj)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bf.Serialize(stream, obj);
byte[] datas = stream.ToArray();
stream.Dispose();
return datas;
} public static object Deserialize(byte[] datas)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream(datas);
object obj = bf.Deserialize(stream);
stream.Dispose();
return obj;
}
}
发送端 private void button1_Click(object sender, EventArgs e)
{
tagMonitorMessage mm = new tagMonitorMessage();
mm.m_message_length = 1223112; Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse(this.textBox2.Text.ToString());
//byte[] sendbuf = Encoding.GetEncoding("gb2312").GetBytes(this.textBox1.Text.ToString());
byte[] sendbuf = tagMonitorMessage.Serialize(mm);
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
s.SendTo(sendbuf, ep);
}
接收端 private void StartListener()
{
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);
string strIP;
strIP = "信息来源" + groupEP.Address.ToString();
tagMonitorMessage mm = tagMonitorMessage.Deserialize(bytes);
MessageBox.Show(mm.ToString(), strIP);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}