Ejemplo n.º 1
0
        private void ConnectChat()
        {
            textBoxName.Text = UserName;
            UdpClient  client   = new UdpClient();
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005);

            try
            {
                TalkPacket msg = new TalkPacket(1, UserName);
                client.Send(msg.getBytes(), msg.MsgLength, endPoint);
                client.Close();
                textBoxName.Enabled = false;
                buttonConnect.Text  = "Отключиться";
                Connected           = true;
                token      = cancelTokenSource.Token;
                receiveUDP = new Task(() => ReceiveConnection());
                receiveTCP = new Task(() => ReceiveMessage());
                receiveUDP.Start();
                receiveTCP.Start();
                this.Invoke(new MethodInvoker(() =>
                {
                    ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " Вы присоединились к разговору.");
                }));
            }
            catch (Exception ex)
            {
                client.Close();
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 2
0
        public static void Process_TalkPacket(Player client, TalkPacket packet)
        {
            if (packet.Words[0] == Constants.COMMAND_PREFIX)
            {
                Commands.Handle(client, packet.Words.Substring(1).ToLower().Split(' '));
                return;
            }
            switch (packet.Type)
            {
            case ChatType.Talk:
                client.SendToScreen(packet);
                break;

            case ChatType.Whisper:
                var target = Managers.PlayerManager.GetUser(packet.Hearer);
                if (target != null)
                {
                    target.Send(packet);
                }
                else
                {
                    packet.Words = packet.Hearer + " is not online";
                    client.Send(packet);
                }
                break;
            }
        }
Ejemplo n.º 3
0
        private void LeaveChat()
        {
            UdpClient  client   = new UdpClient();
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005);

            try
            {
                TalkPacket msg = new TalkPacket(0);
                client.Send(msg.getBytes(), msg.MsgLength, endPoint);
                textBoxName.Enabled = true;
                buttonConnect.Text  = "Подключиться";
                Connected           = false;
                Requested           = false;
                cancelTokenSource.Cancel();
                this.Invoke(new MethodInvoker(() =>
                {
                    ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " Вы покинули нас.");
                }));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                client.Close();
            }
        }
Ejemplo n.º 4
0
    void OnPacketHAndled(int node, int packetType, byte[] data)
    {
        this.node = node;
        var packet = new TalkPacket(data);

        receivedText.text = packet.GetTalk().text;
    }
 public DbChatLog(TalkPacket _packet)
 {
     Time    = DateTime.Now;
     Type    = _packet.Type;
     From    = _packet.Speaker;
     To      = _packet.Hearer;
     Message = _packet.Words;
 }
Ejemplo n.º 6
0
        private void messageReceived(Packet packet, Connection connection)
        {
            TalkPacket request  = (TalkPacket)packet;
            TalkPacket response = new TalkPacket();

            response.Message = "Message returning from server: " + request.Message;
            connection.Send(response);
        }
Ejemplo n.º 7
0
        private void connectionEstablished(Connection connection, ConnectionType connectionType)
        {
            TalkPacket talkPacket = new TalkPacket();

            talkPacket.Message = "Hello World!";

            Console.WriteLine("Client: Connection Established!");
            connection.Send(talkPacket);
        }
Ejemplo n.º 8
0
 private void ReceiveMessage()
 {
     try
     {
         while (!token.IsCancellationRequested)
         {
             TcpListener listener = new TcpListener(IPAddress.Parse(GetLocalIPAddress()), 8006);
             listener.Start();
             TcpClient     client = listener.AcceptTcpClient();
             NetworkStream stream = client.GetStream();
             byte[]        data   = new byte[65536];
             stream.Read(data, 0, data.Length);
             TalkPacket msg = new TalkPacket(data);
             IPEndPoint iep = new IPEndPoint(IPAddress.Parse(((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()), 8006);
             if (msg.Type == 1)
             {
                 Sub sub = new Sub(Encoding.Unicode.GetString(msg.Data), iep);
                 if (!Subs.Contains(sub))
                 {
                     Subs.Add(sub);
                     this.Invoke(new MethodInvoker(() =>
                     {
                         ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + ") " + " присоединился к разговору.");
                     }));
                 }
             }
             else if (msg.Type == 2)
             {
                 string name = "Аноним";
                 foreach (Sub sub in Subs)
                 {
                     if (sub.endPoint.Equals(iep))
                     {
                         name = sub.name;
                         break;
                     }
                 }
                 this.Invoke(new MethodInvoker(() =>
                 {
                     ListMessages.Items.Add(DateTime.Now.ToLongTimeString() + " " + name + "(" + iep.ToString() + "): " + Encoding.Unicode.GetString(msg.Data));
                 }));
             }
             else
             {
                 MessageBox.Show("An error occured!");
             }
             client.Close();
             stream.Close();
             listener.Stop();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 9
0
 private void ReceiveConnection()
 {
     try
     {
         while (!token.IsCancellationRequested)
         {
             UdpClient client = new UdpClient(8005);
             client.JoinMulticastGroup(IPAddress.Parse("230.230.230.230"), 100);
             IPEndPoint remoteIp = null;
             byte[]     data     = client.Receive(ref remoteIp);
             TalkPacket msg      = new TalkPacket(data);
             Sub        sub      = new Sub(Encoding.Unicode.GetString(msg.Data), new IPEndPoint(remoteIp.Address, 8006));
             client.Close();
             if (msg.Type == 1)
             {
                 if (!Subs.Contains(sub))
                 {
                     Subs.Add(sub);
                 }
                 this.Invoke(new MethodInvoker(() =>
                 {
                     ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + ") " + " присоединился к разговору.");
                 }));
                 msg = new TalkPacket(1, UserName);
                 Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                 sender.Connect(sub.endPoint.Address, 8006);
                 sender.Send(msg.getBytes(), SocketFlags.None);
                 sender.Close();
             }
             else if (msg.Type == 0)
             {
                 foreach (Sub Ssub in Subs)
                 {
                     if (Ssub.endPoint == sub.endPoint)
                     {
                         Subs.Remove(Ssub);
                         break;
                     }
                 }
                 this.Invoke(new MethodInvoker(() =>
                 {
                     ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " " + sub.name + "(" + sub.endPoint.ToString() + "): " + " покинул нас.");
                 }));
             }
             else
             {
                 MessageBox.Show("An error occured!");
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 10
0
        private void ReceiveMessage(ListBox lb)
        {
            TcpListener listener = new TcpListener(IPAddress.Parse(GetLocalIPAddress()), 50);

            listener.Start();
            byte[] data = new byte[65536];
            try
            {
                while (!token.IsCancellationRequested)
                {
                    TcpClient     client = listener.AcceptTcpClient();
                    NetworkStream stream = client.GetStream();
                    stream.Read(data, 0, data.Length);
                    TalkPacket msg = new TalkPacket(data);
                    IPEndPoint iep = (IPEndPoint)client.Client.RemoteEndPoint;
                    if (msg.Type == 1)
                    {
                        Sub sub = new Sub(msg.Data.ToString(), iep);
                        if (!Subs.Contains(sub))
                        {
                            Subs.Add(sub);
                            lb.Items.Add("     " + sub.name + " присоединился к разговору.");
                        }
                    }
                    else if (msg.Type == 2)
                    {
                        string name = "Аноним";
                        foreach (Sub sub in Subs)
                        {
                            if (sub.endPoint.Equals(iep))
                            {
                                name = sub.name;
                                break;
                            }
                        }
                        lb.Items.Add(name + ": " + Encoding.ASCII.GetString(msg.Data));
                    }
                    else
                    {
                        MessageBox.Show("An error occured!");
                    }
                    client.Close();
                    stream.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            listener.Stop();
        }
Ejemplo n.º 11
0
        private void ReceiveConnection(ListBox lb)
        {
            UdpClient client = new UdpClient(8005);

            client.JoinMulticastGroup(IPAddress.Parse("230.230.230.230"), 50);
            IPEndPoint remoteIp = null;

            try
            {
                while (!token.IsCancellationRequested)
                {
                    byte[]     data = client.Receive(ref remoteIp);
                    TalkPacket msg  = new TalkPacket(data);
                    Sub        sub  = new Sub(msg.Data.ToString(), remoteIp);
                    if (msg.Type == 1)
                    {
                        if (!Subs.Contains(sub))
                        {
                            Subs.Add(sub);
                        }
                        lb.Items.Add("     " + sub.name + " присоединился к разговору.");
                        TcpClient     sender = new TcpClient(remoteIp);
                        NetworkStream stream = sender.GetStream();
                        msg = new TalkPacket(1, UserName);
                        stream.Write(msg.getBytes(), 0, msg.MsgLength);
                        stream.Close();
                        sender.Close();
                    }
                    else if (msg.Type == 0)
                    {
                        if (Subs.Contains(sub))
                        {
                            Subs.Remove(sub);
                            lb.Items.Add("     " + sub.name + " покинул нас.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("An error occured!");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            client.Close();
        }
Ejemplo n.º 12
0
        private void buttonSend_Click(object sender, EventArgs e)
        {
            if (Connected && textBoxMsg.Text.Length > 0)
            {
                TalkPacket msg = new TalkPacket(2, textBoxMsg.Text);
                ListMessages.Items.Add("     " + DateTime.Now.ToLongTimeString() + " Вы: " + textBoxMsg.Text);
                textBoxMsg.Text = "";
                Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                foreach (Sub sub in Subs)
                {
                    client.Connect(sub.endPoint);
                    client.Send(msg.getBytes(), SocketFlags.None);
                    client.Close();
                }
            }
            else
            {
                MessageBox.Show("Вы не подключены к чату.");
            }
        }
Ejemplo n.º 13
0
        private void buttonSend_Click(object sender, EventArgs e)
        {
            if (Connected)
            {
                TalkPacket msg = new TalkPacket(3, textBoxMsg.Text);
                ListMessages.Items.Add(" Вы: " + textBoxMsg.Text);
                textBoxMsg.Text = "";

                foreach (Sub sub in Subs)
                {
                    IPEndPoint    iep    = sub.endPoint;
                    TcpClient     client = new TcpClient(iep);
                    NetworkStream stream = client.GetStream();
                    stream.Write(msg.getBytes(), 0, msg.MsgLength);
                    stream.Close();
                    client.Close();
                }
            }
            else
            {
                MessageBox.Show("Вы не подключены к чату.");
            }
        }
Ejemplo n.º 14
0
        private void LeaveChat(ListBox lb)
        {
            UdpClient  client   = new UdpClient();
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("230.230.230.230"), 8005);

            try
            {
                TalkPacket msg = new TalkPacket(0);
                client.Send(msg.getBytes(), msg.MsgLength, endPoint);
                textBoxName.Enabled = true;
                buttonConnect.Text  = "Подключиться";
                Connected           = false;
                cancelTokenSource.Cancel();
                lb.Items.Add("     Вы покинули нас.");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                client.Close();
            }
        }
Ejemplo n.º 15
0
        private void messageReceived(Packet packet, Connection connection)
        {
            TalkPacket response = (TalkPacket)packet;

            Console.WriteLine($"Client: Message received! {response.Message}");
        }