Как «пометить» сообщение, отправленное пользователем, а не просто получить его, как если бы оно было от кого-то другого? - PullRequest
0 голосов
/ 30 апреля 2019

В настоящее время при отправке сообщения в этом простом приложении на C # оно получает сообщение, как будто с другого компьютера в сети. Теперь, если я хочу заставить его сказать, например: «Me: sampleMessage» вместо того, чтобы просто выплевывать IP и порт, как я могу сделать это, не переписывая всю программу?

Я уже пытался сравнить 'ep' с 'groupEP', чтобы найти похожий адрес / порт, но безрезультатно.

namespace ChattApp
{
    class Program
    {
        private const int ListenPort = 11000;
        public static IPEndPoint epTemp;
        static void Main(string[] args)
        {
            var listenThread = new Thread(Listener);
            listenThread.Start();

            Socket socket = new Socket(AddressFamily.InterNetwork,
                SocketType.Dgram, ProtocolType.Udp);
            socket.EnableBroadcast = true;
            IPEndPoint ep = new IPEndPoint(IPAddress.Broadcast, 11000);

            Thread.Sleep(1000);

            while (true)
            {
                Console.Write(">");
                string msg = Console.ReadLine();

                byte[] sendbuf = Encoding.UTF8.GetBytes(msg);
                socket.SendTo(sendbuf, ep);
                epTemp = ep;
                Thread.Sleep(200);
            }
        }

        static void Listener()
        {
            UdpClient listener = new UdpClient(ListenPort);

            try
            {
                while (true)
                {
                    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, ListenPort);
                    byte[] bytes = listener.Receive(ref groupEP);

                    DateTime dt = DateTime.Now;

                    Console.WriteLine("{0} at {1}: {2}\n", groupEP.ToString(), dt.ToString("HH:mm"),
                        Encoding.UTF8.GetString(bytes, 0, bytes.Length));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                listener.Close();
            }
        }
    }
}
...