UDP Listener respond to client

22,338

Just do it the other way round. Call StartListener on the client and it can receive udp data like a server.

On your server just send data with the clients code.

Share:
22,338
David W
Author by

David W

Updated on June 11, 2020

Comments

  • David W
    David W almost 4 years

    I found this great code on MSDN for a UDP Client/Server connection, however the client can only send to the server, it cant reply back. How can I make this so the server can respond to the client that send the message. The Server

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.IO;
    using System.Security.Cryptography;
    
    
    namespace UDP_Server
    {
        class Program
        {
            private const int listenPort = 11000;
    
            private static void StartListener()
            {
                bool done = false;
    
                UdpClient listener = new UdpClient(listenPort);
                IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
                try
                {
                    while (!done)
                    {
                        Console.WriteLine("Waiting for broadcast");
                        byte[] bytes = listener.Receive(ref groupEP);
                        Console.WriteLine("Received broadcast from {0} :\n {1}\n",groupEP.ToString(), Encoding.ASCII.GetString(bytes, 0, bytes.Length));
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                finally
                {
                    listener.Close();
                }
            }
    
            public static int Main()
            {
                StartListener();
    
                return 0;
            }
        }
    
    }
    

    And the client

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.IO;
    using System.Security.Cryptography;
    
    namespace UDP_Client
    {
        class Program
        {
            static void Main(string[] args)
            {
                Send("TEST STRING");
                Console.Read();
            }
            static void Send(string Message)
            {
                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                IPAddress broadcast = IPAddress.Parse("10.1.10.117");
                byte[] sendbuf = Encoding.ASCII.GetBytes(Message);
                IPEndPoint ep = new IPEndPoint(broadcast, 11000);
                s.SendTo(sendbuf, ep);
            }
        }
    }