예제 #1
0
파일: Form1.cs 프로젝트: filol/IRC-CSHARP
        private void join_Click(object sender, EventArgs e)
        {
            if (chanelList.SelectedItem == null)
            {
                MessageBox.Show("Vous devez selectionner un topics");
                return;
            }
            currentChannel = chanelList.SelectedItem.ToString();
            if (privateChannels.Contains(currentChannel))
            {
                chatBody.Clear();
                UpdateChatBody(channels[currentChannel]);
                return;
            }
            if (!channels.ContainsKey(chanelList.SelectedItem.ToString())) //Si le topic n'existe pas on l'ajoute dans notre dictionnaire
            {
                channels.Add(currentChannel, new List <Message>());
            }
            chatBody.Clear();
            UpdateChatBody(channels[currentChannel]);

            //Message pour être inscrit dans la liste des utilisateurs dans le channel
            Message message = new Message();

            message.author  = Nickname;
            message.channel = currentChannel;
            message.code    = 2;
            Utils.Utils.sendMsg(comm.GetStream(), message);
        }
예제 #2
0
파일: Form1.cs 프로젝트: filol/IRC-CSHARP
        private void create_Click(object sender, EventArgs e)
        {
            string value = "new channel";

            if (InputBox("Créé un channel", "New channel name:", ref value, true) == DialogResult.OK)
            {
                currentChannel = value;
                Message message = new Message();
                message.author  = Nickname;
                message.channel = currentChannel;
                message.code    = 2;
                Utils.Utils.sendMsg(comm.GetStream(), message);
            }
        }
예제 #3
0
파일: Form1.cs 프로젝트: filol/IRC-CSHARP
        private void UpdateChatBody(Message msg)
        {
            Console.WriteLine("Message recu : " + msg);

            //On remplit le richtextbox avec les données reues
            //lorsqu'on a tout réceptionné
            if (chatBody.InvokeRequired)
            {
                chatBody.Invoke(new UpdateChatBodyDelegate(UpdateChatBody), msg);
            }
            else
            {
                if (msg.channel == currentChannel)
                {
                    chatBody.Text += msg.author + " say : " + msg.message + "\n";
                }
            }
        }
예제 #4
0
파일: Form1.cs 프로젝트: filol/IRC-CSHARP
        private void Connect_Click(object sender, EventArgs e)
        {
            if (Nick.Text == "")
            {
                MessageBox.Show("Le pseudo ne peut être null");
                return;
            }
            if (ServerHost.Text == "")
            {
                MessageBox.Show("Le nom du serveur ne peut être null");
                return;
            }

            //if (!checkUserAccount(Nick.Text,Password.Text))
            //{
            //    Console.WriteLine("Failed to connect");
            //    return;
            //}

            comm     = new TcpClient(ServerHost.Text, 8976);
            Nickname = Nick.Text;
            Utils.Message message = new Utils.Message();
            message.author  = Nickname;
            message.channel = "Général";
            message.code    = -1;
            string msg2 = "Hello";

            Utils.Utils.sendMsg(comm.GetStream(), message);
            Message response = Utils.Utils.rcvMsg(comm.GetStream());

            if (response.code != 0) //Erreur, something wrong
            {
                MessageBox.Show(response.message);
            }


            //Si on était précedement connecté on stop le thread
            UpdateChatBody(response);
            ReceiveMessageThread = new Thread(() => ReceiveMessages(comm));
            ReceiveMessageThread.Start();
        }
예제 #5
0
파일: Form1.cs 프로젝트: filol/IRC-CSHARP
        private void ReceiveMessages(TcpClient comm)
        {
            while (true)
            {
                if (comm.Connected)
                {
                    Message message = Utils.Utils.rcvMsg(comm.GetStream());
                    Console.WriteLine(message);
                    if (!channels.ContainsKey(message.channel))
                    {
                        channels.Add(message.channel, new List <Message>());
                    }

                    if (message.code == 4) //On nous envoi les liste des utilisateurs dans le channel
                    {
                        List <string> result = message.message.Split(',').ToList();
                        UpdateListUser(result);
                        continue;
                    }

                    if (message.code == 5)
                    {
                        privateChannels.Add(message.channel);
                    }
                    channels[message.channel].Add(message);
                    UpdateChatBody(message);
                    if (message.code == 3)
                    {
                        Console.WriteLine("Chat body clear");
                        clearChatBody();
                    }

                    UpdateListChannel(new List <string>(channels.Keys));
                }
                else //On est plus connecté donc on arrête tout
                {
                    MessageBox.Show("Disconnected");
                }
            }
        }