Мой чат udp перестает узнавать других пользователей - PullRequest
0 голосов
/ 04 февраля 2019

Мой вопрос связан с чатом, который я разрабатываю.Иногда, когда я включаю определенный компьютер в своей локальной сети, он перестает общаться с другими (то есть сообщения не приходят на другие компьютеры и не приходят к нему), эта проблема обычно решает перезагрузку компьютера, ноэто не приятно, достигать этого конца.

Я разделяю программирование ниже:

private UdpClient udpClient;

private UdpClient client;

private IPAddress multiCastAddress;

private IPEndPoint remoteEp;

    private void Listen()
    {
        try
        {
            client = new UdpClient
            {
                ExclusiveAddressUse = false
            };

            IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 2222);
            client.Client.SetSocketOption(SocketOptionLevel.Socket,                                             SocketOptionName.ReuseAddress, optionValue: true);
            client.ExclusiveAddressUse = false;
            client.Client.Bind(remoteEP);
            client.JoinMulticastGroup(multiCastAddress);

            while (alive)
            {
                Byte[] data = client.Receive(ref remoteEP);
                string message = Encoding.UTF8.GetString(data);
                cliente.OnMessageRecieved(new MessageEventArgs(message));
            }
        }
        catch (Exception ex) { Crearlog(ex); }
    }

    private void ConnectToChat()
    {
        try
        {
            multiCastAddress = IPAddress.Parse("239.0.0.222");

            udpClient = new UdpClient();

            udpClient.JoinMulticastGroup(multiCastAddress);

            remoteEp = new IPEndPoint(multiCastAddress, 2222);
        }
        catch (Exception ex) { Crearlog(ex); }
    }



    public void Transmit(string typeMessage, string content = "")
    {
        SmallMessage msg = new SmallMessage();          

        msg.Handle = NickName;                          

        msg.typeMessage = typeMessage;                  

        msg.UserSelectedColor = UserSelectedColor;      

        msg.content = content;                          

        if (typeMessage == "RecargarLista")             

            msg.content = Avatarlength.ToString();

        byte[] buffer = Encoding.UTF8.GetBytes(msg.ToJson());   

        udpClient.Send(buffer, buffer.Length, remoteEp);        
    }
...