using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace UdpSender
{
public class UdpPosted
{
public void SendCallback(IAsyncResult iar)
{
//UdpClient uc = (UdpClient)iar.AsyncState;
Console.WriteLine("numbers of bytes send and time is {0}", DateTime.Now.ToString());
} public void SendMessageUdp(IPAddress ipa, int port, string message)
{
UdpClient uc = new UdpClient();
IPEndPoint iep = new IPEndPoint(ipa, port); byte[] sendBytes = Encoding.ASCII.GetBytes(message);
//uc.Ttl = 1;
uc.BeginSend(sendBytes, sendBytes.Length, iep, new AsyncCallback(SendCallback), uc);
} ////定义UDP的发送端
//public static UdpClient uSenderSlot; ////定义所要发送的IP
//public static IPAddress ipa; ////定义所要发送的IPE
//public static IPEndPoint ipe;
////定义所要发送的范围和端口号
//public UdpPosted(byte [] ipbs, int iport)
//{
// ipa = new IPAddress(ipbs);
// ipe = new IPEndPoint(ipa, iport); // uSenderSlot = new UdpClient(ipe);
//} //public void SendCallback(IAsyncResult iar)
//{
// UdpClient u = (UdpClient)iar.AsyncState;
// Console.WriteLine("The UdpSender send {0}.",u.EndSend(iar));
//} //public void PostMsgToTarget(string msg)
//{
// Byte[] sendBytes = Encoding.ASCII.GetBytes(msg);
// uSenderSlot.BeginSend(sendBytes, sendBytes.Length, ipe, new AsyncCallback(SendCallback), uSenderSlot);
//} } class Program
{
static void Main(string[] args)
{
byte [] target = new byte[4]{255,255,255,255}; UdpPosted udpPost = new UdpPosted(); while (true)
{
udpPost.SendMessageUdp(new IPAddress(target), 12000, DateTime.Now.ToString());
Thread.Sleep(1);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace UdpListener
{
public class MsgReceivedArgs : EventArgs
{
private readonly string recvMsg; public MsgReceivedArgs(string target)
{
recvMsg = target;
} public string RecvMsg
{
get { return recvMsg; }
}
} public class UdpReceived
{
//定义UDP的接收端
public static UdpClient uReceiverSlot; //定义IPEndPoint端
public static IPEndPoint ipEp; //订阅者必须实现的委托
public delegate void MsgReceiverHandler(object sender, MsgReceivedArgs receiveMsg); //控制者对于委托的访问
public event MsgReceiverHandler OnMsgReceived; //生成一个对应端口的UDPClient,监听任意地址所发来的消息。
public UdpReceived(int port)
{
ipEp = new IPEndPoint(IPAddress.Any, port);
uReceiverSlot = new UdpClient(ipEp);
} //UDPClient的异步接收
public void StartReceive()
{
uReceiverSlot.BeginReceive(new AsyncCallback(ReceiveCallback), ipEp);
Thread.Sleep(System.Threading.Timeout.Infinite);
} //UDPClient异步接收到指令后的函数
public void ReceiveCallback(IAsyncResult iar)
{
IPEndPoint ipe = (IPEndPoint)ipEp;
Byte[] receiveBytes = uReceiverSlot.EndReceive(iar, ref ipe); string receiveMessage = Encoding.ASCII.GetString(receiveBytes); //创建MsgReceivedArgs 对象 传给订阅者
if (receiveBytes.Length > 0)
{
MsgReceivedArgs receiveInformation = new MsgReceivedArgs(receiveMessage); if (OnMsgReceived != null)
{
OnMsgReceived(this, receiveInformation);
}
} //重新进行接收
uReceiverSlot.BeginReceive(new AsyncCallback(ReceiveCallback), ipEp);
} } public class Tester
{
public void Subscribe(UdpReceived theUdp)
{
theUdp.OnMsgReceived += new UdpReceived.MsgReceiverHandler(theUdp_OnMsgReceived);
} void theUdp_OnMsgReceived(object sender, MsgReceivedArgs receiveMsg)
{
Console.WriteLine("The udpClient received a {0}.", receiveMsg.RecvMsg);
}
} class Program
{
static void Main(string[] args)
{
UdpReceived udpR = new UdpReceived(12000);
Tester test = new Tester();
test.Subscribe(udpR); udpR.StartReceive();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace UdpSender
{
public class UdpPosted
{
public void SendCallback(IAsyncResult iar)
{
//UdpClient uc = (UdpClient)iar.AsyncState;
Console.WriteLine("numbers of bytes send and time is {0}", DateTime.Now.ToString());
} public void SendMessageUdp(IPAddress ipa, int port, string message)
{
UdpClient uc = new UdpClient();
IPEndPoint iep = new IPEndPoint(ipa, port); byte[] sendBytes = Encoding.ASCII.GetBytes(message);
//uc.Ttl = 1;
uc.BeginSend(sendBytes, sendBytes.Length, iep, new AsyncCallback(SendCallback), uc);
} ////定义UDP的发送端
//public static UdpClient uSenderSlot; ////定义所要发送的IP
//public static IPAddress ipa; ////定义所要发送的IPE
//public static IPEndPoint ipe;
////定义所要发送的范围和端口号
//public UdpPosted(byte [] ipbs, int iport)
//{
// ipa = new IPAddress(ipbs);
// ipe = new IPEndPoint(ipa, iport); // uSenderSlot = new UdpClient(ipe);
//} //public void SendCallback(IAsyncResult iar)
//{
// UdpClient u = (UdpClient)iar.AsyncState;
// Console.WriteLine("The UdpSender send {0}.",u.EndSend(iar));
//} //public void PostMsgToTarget(string msg)
//{
// Byte[] sendBytes = Encoding.ASCII.GetBytes(msg);
// uSenderSlot.BeginSend(sendBytes, sendBytes.Length, ipe, new AsyncCallback(SendCallback), uSenderSlot);
//} } class Program
{
static void Main(string[] args)
{
byte [] target = new byte[4]{255,255,255,255}; UdpPosted udpPost = new UdpPosted(); while (true)
{
udpPost.SendMessageUdp(new IPAddress(target), 12000, DateTime.Now.ToString());
Thread.Sleep(1);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace UdpListener
{
public class MsgReceivedArgs : EventArgs
{
private readonly string recvMsg; public MsgReceivedArgs(string target)
{
recvMsg = target;
} public string RecvMsg
{
get { return recvMsg; }
}
} public class UdpReceived
{
//定义UDP的接收端
public static UdpClient uReceiverSlot; //定义IPEndPoint端
public static IPEndPoint ipEp; //订阅者必须实现的委托
public delegate void MsgReceiverHandler(object sender, MsgReceivedArgs receiveMsg); //控制者对于委托的访问
public event MsgReceiverHandler OnMsgReceived; //生成一个对应端口的UDPClient,监听任意地址所发来的消息。
public UdpReceived(int port)
{
ipEp = new IPEndPoint(IPAddress.Any, port);
uReceiverSlot = new UdpClient(ipEp);
} //UDPClient的异步接收
public void StartReceive()
{
uReceiverSlot.BeginReceive(new AsyncCallback(ReceiveCallback), ipEp);
Thread.Sleep(System.Threading.Timeout.Infinite);
} //UDPClient异步接收到指令后的函数
public void ReceiveCallback(IAsyncResult iar)
{
IPEndPoint ipe = (IPEndPoint)ipEp;
Byte[] receiveBytes = uReceiverSlot.EndReceive(iar, ref ipe); string receiveMessage = Encoding.ASCII.GetString(receiveBytes); //创建MsgReceivedArgs 对象 传给订阅者
if (receiveBytes.Length > 0)
{
MsgReceivedArgs receiveInformation = new MsgReceivedArgs(receiveMessage); if (OnMsgReceived != null)
{
OnMsgReceived(this, receiveInformation);
}
} //重新进行接收
uReceiverSlot.BeginReceive(new AsyncCallback(ReceiveCallback), ipEp);
} } public class Tester
{
public void Subscribe(UdpReceived theUdp)
{
theUdp.OnMsgReceived += new UdpReceived.MsgReceiverHandler(theUdp_OnMsgReceived);
} void theUdp_OnMsgReceived(object sender, MsgReceivedArgs receiveMsg)
{
Console.WriteLine("The udpClient received a {0}.", receiveMsg.RecvMsg);
}
} class Program
{
static void Main(string[] args)
{
UdpReceived udpR = new UdpReceived(12000);
Tester test = new Tester();
test.Subscribe(udpR); udpR.StartReceive();
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货