Csharp/CSharp Tutorial/Network/Socket Udp Server
Simple Udp server
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { int receivedDataLength; byte[] data = new byte[1024]; IPEndPoint ip = new IPEndPoint(IPAddress.Any, 9999); Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp); socket.Bind(ip); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint Remote = (EndPoint)(sender); while(true) { data = new byte[1024]; receivedDataLength = socket.ReceiveFrom(data, ref Remote); Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength)); socket.SendTo(data, receivedDataLength, SocketFlags.None, Remote); } }
}</source>
Udp Multi receive
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Console.WriteLine("Ready to receive..."); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9999); EndPoint ep = (EndPoint)iep; sock.Bind(iep); sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,new MulticastOption(IPAddress.Parse("127.0.0.1"))); byte[] data = new byte[1024]; int recv = sock.ReceiveFrom(data, ref ep); string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString()); sock.Close(); }
}</source>
Udp server setup
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { int receivedDataLength; byte[] data = new byte[1024]; IPEndPoint ip = new IPEndPoint(IPAddress.Any, 9999); Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp); socket.Bind(ip); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint tmpRemote = (EndPoint)(sender); receivedDataLength = socket.ReceiveFrom(data, ref tmpRemote); Console.WriteLine("Message received from {0}:", tmpRemote.ToString()); Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength)); string welcome = "Welcome"; data = Encoding.ASCII.GetBytes(welcome); socket.SendTo(data, data.Length, SocketFlags.None, tmpRemote); for(int i = 0; i < 5; i++) { data = new byte[1024]; receivedDataLength = socket.ReceiveFrom(data, ref tmpRemote); Console.WriteLine(Encoding.ASCII.GetString(data, 0, receivedDataLength)); } socket.Close(); }
}</source>