Почему не приходят сообщения?

Разбираю многопользовательский чат

Запускается сервер, клиент.
На клиенте пишется сообщение, оно отправляется на сервер и от туда сервер рассылает всем юзерам которые до этого писали. но если я отправляю сообщение не из Console.ReadLine() а сам в переменную(message:34) вписываю текст то сообщения отправляются но не рассылаются, почему так может происходить?

Клиент:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace UDP_CHAT_CLIENT
{
    class Program
    {
        static int remotePort = Int32.Parse("3000"); // Порт для отправки сообщений
        static IPAddress ipAddress = IPAddress.Parse("Тут мой белый IP, на роутере за ранее расшарил порт"); // IP адрес сервера
        static Socket listeningSocket; // Сокет

        static void Main(string[] args)
        {
            Console.WriteLine("╔═══════════════════════════════════════════════════════════╗");
            Console.WriteLine("║                         Chat Started!                     ║");
            Console.WriteLine("╚═══════════════════════════════════════════════════════════╝");
            //Console.Write("Введите ip адрес получателя: ");
            //ipAddress = IPAddress.Parse("91.123.83.107");
            //Console.Write("Введите порт для отправки сообщений: ");
            //remotePort = Int32.Parse("3000");
            Console.WriteLine("Подключение к серверу...");
            //Console.WriteLine();


            listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // Создание сокета
            Task listeningTask = new Task(Listen); // Создание потока
            listeningTask.Start(); // Запуск потока

            while (true) // Отправление сообщений серверу в бесконечном цикле
            {
                string message = Console.ReadLine();
                //string message = "test";
                byte[] data = Encoding.Unicode.GetBytes(message);
                EndPoint remotePoint = new IPEndPoint(ipAddress, remotePort);
                listeningSocket.SendTo(data, remotePoint);
            }

        }

        // Поток для приема подключений
        private static void Listen()
        {
                IPEndPoint localIP = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); // Прослушиваем по адресу
                listeningSocket.Bind(localIP);

                while (true)
                {
                    StringBuilder builder = new StringBuilder();
                    int bytes = 0;
                    byte[] data = new byte[256];

                    EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);

                    do
                    {
                        bytes = listeningSocket.ReceiveFrom(data, ref remoteIp);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    }
                    while (listeningSocket.Available > 0);

                    IPEndPoint remoteFullIp = remoteIp as IPEndPoint;

                    if (builder.ToString() == "ConnectPing")
                    {
                        Console.WriteLine("Подключение к серверу установлено.");
                        Console.WriteLine("Для отправки сообщений введите сообщение и нажмите Enter");
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("{0}:{1} - {2}", remoteFullIp.Address.ToString(), remoteFullIp.Port, builder.ToString());
                    }
                }
        }
        // закрытие сокета
        private static void Close()
        {
            if (listeningSocket != null)
            {
                listeningSocket.Shutdown(SocketShutdown.Both);
                listeningSocket.Close();
                listeningSocket = null;
            }

            Console.WriteLine("Сервер остановлен!");
        }
    }
}

Сервер:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace UDP_CHAT_SERVER
{
    class Program
    {
        static int localPort = 3000; // порт приема сообщений
        static Socket listeningSocket; // Сокет

        static List<IPEndPoint> clients = new List<IPEndPoint>(); // Список "подключенных" клиентов

        static void Main(string[] args)
        {
            Console.WriteLine(@"************************************************************************************");
            Console.WriteLine(@"*       _____                              _____ __             __           __    *");
            Console.WriteLine(@"*      / ___/___  ______   _____  _____   / ___// /_____ ______/ /____  ____/ /    *");
            Console.WriteLine(@"*      \__ \/ _ \/ ___/ | / / _ \/ ___/   \__ \/ __/ __ `/ ___/ __/ _ \/ __  /     *");
            Console.WriteLine(@"*     ___/ /  __/ /   | |/ /  __/ /      ___/ / /_/ /_/ / /  / /_/  __/ /_/ /      *");
            Console.WriteLine(@"*    /____/\___/_/    |___/\___/_/      /____/\__/\__,_/_/   \__/\___/\__,_/       *");
            Console.WriteLine(@"*                                                                                  *");
            Console.WriteLine(@"************************************************************************************");
            //Console.Write("Введите порт для приема сообщений: ");
            //localPort = Int32.Parse(Console.ReadLine());
            //Console.WriteLine();

            try
            {
                listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // Создание сокета
                Task listeningTask = new Task(Listen); // Создание потока для получения сообщений
                listeningTask.Start(); // Запуск потока
                listeningTask.Wait(); // Не идем дальше пока поток не будет остановлен
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Close(); // Закрываем сокет
            }
        }

        // поток для приема подключений
        private static void Listen()
        {
            try
            {
                //Прослушиваем по адресу
                IPEndPoint localIP = new IPEndPoint(IPAddress.Parse("0.0.0.0"), localPort);
                listeningSocket.Bind(localIP);

                while (true)
                {
                    StringBuilder builder = new StringBuilder(); // получаем сообщение
                    int bytes = 0; // количество полученных байтов
                    byte[] data = new byte[256]; // буфер для получаемых данных
                    EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0); //адрес, с которого пришли данные

                    do
                    {
                        bytes = listeningSocket.ReceiveFrom(data, ref remoteIp);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    }
                    while (listeningSocket.Available > 0);
                    IPEndPoint remoteFullIp = remoteIp as IPEndPoint; // получаем данные о подключении



                    Console.WriteLine("{0}:{1} - {2}", remoteFullIp.Address.ToString(), remoteFullIp.Port, builder.ToString()); // выводим сообщение

                    bool addClient = true; // Переменная для определения нового пользователя

                    for (int i = 0; i < clients.Count; i++) // Циклом перебераем всех пользователей которые отправляли сообщения на сервер
                        if (clients[i].Address.ToString() == remoteFullIp.Address.ToString()) // Если аддресс отправителя данного сообщения совпадает с аддрессом в списке
                            addClient = false; // Не добавляем клиента в историю

                    if (addClient == true) // Если этого отправителя не было обноруженно в истории
                        clients.Add(remoteFullIp); // Добавляем клиента в исторю

                    BroadcastMessage(builder.ToString(), remoteFullIp.Address.ToString()); // Рассылаем сообщения всем клиентам кроме самого отправителя
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Close();
            }
        }

        // Метод для рассылки сообщений
        private static void BroadcastMessage(string message, string ip)
        {
            Console.WriteLine("отправляю: "+message);
            if (message != "ConnectPing")
            {
                Console.WriteLine("отправляю не коннект: " + message);
                byte[] data = Encoding.Unicode.GetBytes(message); // Формируем байты из текста

                for (int i = 0; i < clients.Count; i++) // Циклом перебераем всех клиентов
                    // if (clients[i].Address.ToString() != ip) // Если аддресс получателя не совпадает с аддрессом отправителя
                    listeningSocket.SendTo(data, clients[i]); // Отправляем сообщение
            }
            else
            {
                Console.WriteLine("отправляю коннект: " + message);
                byte[] data = Encoding.Unicode.GetBytes(message); // Формируем байты из текста

                for (int i = 0; i < clients.Count; i++) // Циклом перебераем всех клиентов
                {
                    if (clients[i].Address.ToString() == ip) // Если аддресс получателя не совпадает с аддрессом отправителя
                    { 
                        listeningSocket.SendTo(data, clients[i]);
                        Console.WriteLine("Отправляю на адрес : " + clients[i].ToString());
                    }
                }
                // Отправляем сообщение
            }

        }

        // закрытие сокета
        private static void Close()
        {
            if (listeningSocket != null)
            {
                listeningSocket.Shutdown(SocketShutdown.Both);
                listeningSocket.Close();
                listeningSocket = null;
            }

            Console.WriteLine("Сервер остановлен!");
        }
    }
}

Ответы (0 шт):