Csharp/CSharp Tutorial/Network/UdpClient — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:20, 26 мая 2010
Содержание
Binary UdpClient: send binary data to Udp server
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { byte[] data = new byte[1024]; string stringData; UdpClient server = new UdpClient("127.0.0.1", 9050); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); int test1 = 45; double test2 = 3.14159; int test3 = -1234567890; bool test4 = false; string test5 = "This is a test."; byte[] data1 = BitConverter.GetBytes(test1); server.Send(data1, data1.Length); byte[] data2 = BitConverter.GetBytes(test2); server.Send(data2, data2.Length); byte[] data3 = BitConverter.GetBytes(test3); server.Send(data3, data3.Length); byte[] data4 = BitConverter.GetBytes(test4); server.Send(data4, data4.Length); byte[] data5 = Encoding.ASCII.GetBytes(test5); server.Send(data5, data5.Length); server.Close(); }
}</source>
Binary Udp Server: receive binary data from Udp client
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { byte[] data = new byte[1024]; IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050); UdpClient newsock = new UdpClient(ipep); Console.WriteLine("Waiting for a client..."); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); byte[] data1 = newsock.Receive(ref sender); int test1 = BitConverter.ToInt32(data1, 0); Console.WriteLine("test1 = {0}", test1); byte[] data2 = newsock.Receive(ref sender); double test2 = BitConverter.ToDouble(data2, 0); Console.WriteLine("test2 = {0}", test2); byte[] data3 = newsock.Receive(ref sender); int test3 = BitConverter.ToInt32(data3, 0); Console.WriteLine("test3 = {0}", test3); byte[] data4 = newsock.Receive(ref sender); bool test4 = BitConverter.ToBoolean(data4, 0); Console.WriteLine("test4 = {0}", test4.ToString()); byte[] data5 = newsock.Receive(ref sender); string test5 = Encoding.ASCII.GetString(data5); Console.WriteLine("test5 = {0}", test5); newsock.Close(); }
}</source>
UdpClient: receive for multicast group
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { UdpClient sock = new UdpClient(9999); Console.WriteLine("Ready to receive..."); sock.JoinMulticastGroup(IPAddress.Parse("127.0.0.1"), 50); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0); byte[] data = sock.Receive(ref iep); string stringData = Encoding.ASCII.GetString(data, 0, data.Length); Console.WriteLine("received: {0} from: {1}", stringData, iep.ToString()); sock.Close(); }
}</source>
UdpClient: Send
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { UdpClient sock = new UdpClient(); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999); byte[] data = Encoding.ASCII.GetBytes("This is a test message"); sock.Send(data, data.Length, iep); sock.Close(); }
}</source>
Udp connection test
<source lang="csharp">using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; class MainClass {
private static void Main() { string IP = "127.0.0.1"; int port = 9999; IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP), port); Thread receiveThread = new Thread(ReceiveData); receiveThread.IsBackground = true; receiveThread.Start(); UdpClient client = new UdpClient(); try { string text; do { text = Console.ReadLine(); if (text.Length != 0) { byte[] data = Encoding.UTF8.GetBytes(text); client.Send(data, data.Length, remoteEndPoint); } } while (text.Length != 0); } catch (Exception err) { Console.WriteLine(err.ToString()); } finally { client.Close(); } } private static void ReceiveData() { UdpClient client = new UdpClient(999); while (true) { try { IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] data = client.Receive(ref anyIP); string text = Encoding.UTF8.GetString(data); Console.WriteLine(">> " + text); } catch (Exception err) { Console.WriteLine(err.ToString()); } } }
}</source>
Use UdpClient
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
public static void Main() { byte[] data = new byte[1024]; string input, stringData; UdpClient udpClient = new UdpClient("127.0.0.1", 9999); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); string welcome = "Hello"; data = Encoding.ASCII.GetBytes(welcome); udpClient.Send(data, data.Length); data = udpClient.Receive(ref sender); Console.WriteLine("Message received from {0}:", sender.ToString()); stringData = Encoding.ASCII.GetString(data, 0, data.Length); Console.WriteLine(stringData); while(true) { input = Console.ReadLine(); udpClient.Send(Encoding.ASCII.GetBytes(input), input.Length); data = udpClient.Receive(ref sender); stringData = Encoding.ASCII.GetString(data, 0, data.Length); Console.WriteLine(stringData); } udpClient.Close(); }
}</source>