Exemple #1
0
        public void startReceive()//funkcja rozpoczynająca odbieranie wiadomości od serwera
        {
            SocketStateObject2 state = new SocketStateObject2();

            state.m_SocketFd = fd;
            state.m_SocketFd.BeginReceive(state.m_DataBuf, 0, 1, 0, new AsyncCallback(ReceiveCallback2), state);
        }
Exemple #2
0
        private void SendButton_Click(object sender, EventArgs e)//funkcja obsługująca przycisk wysyłania wiadomości na forum
        {
            SocketStateObject2 state = new SocketStateObject2();

            state.m_SocketFd   = fd;
            state.msg          = this.textBox2.Text.ToString();
            state.flag         = 2;
            this.textBox2.Text = null;
            byte[] Buf;
            string mess;

            mess = state.flag.ToString() + "\n" + state.msg.Length + "\n" + state.msg;
            Buf  = Encoding.ASCII.GetBytes(mess);
            fd.Send(Buf, Buf.Length, 0);//wysłanie do serwera
        }
Exemple #3
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                /* retrieve the SocketStateObject */
                SocketStateObject2 state    = (SocketStateObject2)ar.AsyncState;
                Socket             socketFd = fd;

                /* read data */
                int    size = socketFd.EndReceive(ar);
                string a;
                char   b;
                state.m_StringBuilder.Append(Encoding.ASCII.GetString(state.m_DataBuf, 0, size));
                /* get the rest of the data */
                a = state.m_StringBuilder.ToString();
                b = a[a.Length - 1];
                if (b == '\n')
                {
                    /* all the data has arrived */

                    MessageBox.Show("jjj" + a + "j");
                    switch (a[0])
                    {
                    case 'Y':
                        Form2 frm = new Form2(socketFd, this.textBoxLogin.Text.ToString(), endPoint, this);
                        frm.Show();
                        this.Hide();
                        socketFd.EndReceive(ar);
                        break;

                    case 'N':
                        MessageBox.Show("Blad logowania");
                        socketFd.EndReceive(ar);
                        break;

                    default:
                        break;
                    }
                    state = null;
                    state = new SocketStateObject2();
                }
                socketFd.BeginReceive(state.m_DataBuf, 0, 1, 0, new AsyncCallback(ReceiveCallback), state);
            }
            catch (Exception exc)
            {
                MessageBox.Show("Exception:\t\n" + exc.Message.ToString());
            }
        }
Exemple #4
0
        private void UserRefreshButton_Click(object sender, EventArgs e)//funkcja obsługująca przycisk odświeżania listy dostępnych użytkowników
        {
            SocketStateObject2 state = new SocketStateObject2();

            state.m_SocketFd = fd;
            state.msg        = "";
            state.flag       = 8;
            byte[] Buf;
            string mess;

            mess = state.flag.ToString() + "\n" + state.msg.Length + "\n" + state.msg;
            Buf  = Encoding.ASCII.GetBytes(mess);

            // fd.BeginConnect(endPoint, new AsyncCallback(ConnectCallback2), state);
            fd.Send(Buf, Buf.Length, 0);; //wysyłanie informacji do serwera o chęci odświeżenia listy użytkowników
        }
Exemple #5
0
        private void button1_Click(object sender, EventArgs e)//funcja obsługująca przycisk wylogowania
        {
            SocketStateObject2 state = new SocketStateObject2();

            state.m_SocketFd = fd;
            state.msg        = "";
            state.flag       = 3;
            byte[] Buf;
            string mess;

            mess = state.flag.ToString() + "\n" + state.msg.Length + "\n" + state.msg;
            Buf  = Encoding.ASCII.GetBytes(mess);

            // fd.BeginConnect(endPoint, new AsyncCallback(ConnectCallback2), state);
            fd.Send(Buf, Buf.Length, 0);//wysyłanie informacji do serwera o wylogowaniu
        }
Exemple #6
0
        private void ForumRefreshButton_Click(object sender, EventArgs e)//funcja obsługująca przycisk odświeżania listy forów
        {
            SocketStateObject2 state = new SocketStateObject2();

            state.m_SocketFd = fd;
            state.msg        = "";
            state.flag       = 7;
            byte[] Buf;
            string mess;

            mess = state.flag.ToString() + "\n" + state.msg.Length + "\n" + state.msg;
            Buf  = Encoding.ASCII.GetBytes(mess);

            fd.Send(Buf, Buf.Length, 0);//wysłanie do serwera informacji o chęci odświeżenia listy forów

            // StartReceiveMess();
            //MessageBox.Show(":::"+state.m_StringBuilder.ToString());
        }
Exemple #7
0
        private void ReceiveCallback2(IAsyncResult ar)
        {
            try
            {
                /* retrieve the SocketStateObject */
                SocketStateObject2 state    = (SocketStateObject2)ar.AsyncState;
                Socket             socketFd = fd;

                /* read data */
                int    size = socketFd.EndReceive(ar);
                string a;
                char   b;

                state.m_StringBuilder.Append(Encoding.ASCII.GetString(state.m_DataBuf, 0, size));
                /* get the rest of the data */
                a = state.m_StringBuilder.ToString();
                b = a[a.Length - 1];
                if (b == '\n')// gdy odebrany znak jest równy \n odczytana została cała wiadomość
                {
                    /* all the data has arrived */

                    switch (a[0])     //pierwszy odebrany znak jest znakiem funkcyjnym
                    {
                    case '0':         // case 0 obsługuje logowanie
                        switch (a[1]) // 2 przesłany znak informuje o powodzeniu/niepowodzeniu logowania
                        {
                        case 'Y':     //powodzenie
                            setThreadedLogoutButton1(true);
                            string mess0 = 7.ToString() + "\n" + 0.ToString() + "\n" + "";
                            byte[] Buf0  = Encoding.ASCII.GetBytes(mess0);
                            fd.Send(Buf0, Buf0.Length, 0);        //wysłanie do servera komunikatu o odświeżeniu listy dostępnych forów
                            setThreadedRefreshForumButton(true);  // aktualizacja przycisków
                            setThreadedChangeForumButton(true);
                            setThreadedAddForumButton(true);
                            setThreadedDeleteForumButton(true);
                            //this.Hide();
                            //mainForm.Hide();
                            break;

                        case 'N':        //niepowodzenie
                            MessageBox.Show("Blad logowania");
                            socketFd.Shutdown(SocketShutdown.Both);
                            socketFd.Close();
                            return;

                            //this.Close();
                            break;

                        default:
                            break;
                        }
                        break;

                    case 'c':         //case c obsługoje informację zmianie forum
                        switch (a[1]) //2 znak zawiera informację o sukcesie/porażce
                        {
                        case 'Y':     //sukces
                            string mess0 = 8.ToString() + "\n" + 0.ToString() + "\n" + "";
                            byte[] Buf0  = Encoding.ASCII.GetBytes(mess0);
                            fd.Send(Buf0, Buf0.Length, 0);
                            mess0 = 7.ToString() + "\n" + 0.ToString() + "\n" + "";
                            Buf0  = Encoding.ASCII.GetBytes(mess0);
                            fd.Send(Buf0, Buf0.Length, 0);        //wysłanie do serwera komunikatu o chęci odświeżenia listy użytkowników
                            setThreadedRefreshUserButton(true);   //aktualizacja  przycisków
                            setThreadedUserWriteButton(true);
                            setThreadedSendButton(true);
                            break;

                        case 'N':        //porażka
                            MessageBox.Show("Nie znaleziono");
                            break;

                        default:
                            break;
                        }
                        break;

                    case 'e':    //serwer informuje o zmianie na liście użytkowników
                        string mess1 = 8.ToString() + "\n" + 0.ToString() + "\n" + "";
                        byte[] Buf1  = Encoding.ASCII.GetBytes(mess1);
                        fd.Send(Buf1, Buf1.Length, 0);    //wysłanie do serwera komunikatu o chęci odświeżenia listy użytkowników
                        break;

                    case 'f':    //serwer informuje o zmianie na liście dostępnych forów
                        mess1 = 7.ToString() + "\n" + 0.ToString() + "\n" + "";
                        Buf1  = Encoding.ASCII.GetBytes(mess1);
                        fd.Send(Buf1, Buf1.Length, 0);    //wysłanie do serwera komunikatu o chęci odświeżenia listy forów
                        break;

                    case 'd':         //case d obsługoje informację o procesie usuwania forum
                        switch (a[1]) //2 znak zawiera informację o sukcesie/porażce
                        {
                        case 'Y':     //sukces
                            string mess0 = 7.ToString() + "\n" + 0.ToString() + "\n" + "";
                            byte[] Buf0  = Encoding.ASCII.GetBytes(mess0);
                            fd.Send(Buf0, Buf0.Length, 0);        //wysłanie do serwera informacji o chęci odświeżenia listy forów

                            setThreadedRefreshUserButton(false);  //aktualizacja przycisków (blokada przycisków obsługujących forum)
                            setThreadedUserWriteButton(false);
                            setThreadedSendButton(false);
                            break;

                        case 'N':        //porażka
                            MessageBox.Show("Nie znaleziono");
                            break;

                        default:
                            break;
                        }
                        break;

                    case '2':                                //nowa wiadomość
                        setThreadedChatbox1(a.Substring(1)); //wyświetlanie nowej wiadomości
                        break;

                    case '1':                                              //nowa wiadomość zawierająca nazwę forum
                        setThreadedChatbox2(a.Substring(1));               //wyświetlanie nowej wiadomości przy czym pole czatu jest czyszczone
                        this.setThreadedtextBox4Forumname(a.Substring(1)); //zaktualizowanie pola zawierającego nazwę forum
                        break;

                    case '3':    //wylogowanie
                        socketFd.Shutdown(SocketShutdown.Both);
                        socketFd.Close();
                        this.setThreadedtextBox4Forumname("");    //czyszczenie okienek
                        this.setThreadedUserListBox("");
                        this.setThreadedChatbox2("");
                        this.setThreadedForumListBox("");
                        setThreadedRefreshUserButton(false);    //blokada przycisków obsługujących forum
                        setThreadedUserWriteButton(false);
                        setThreadedSendButton(false);
                        setThreadedLogoutButton1(false);
                        setThreadedRefreshForumButton(false);     // aktualizacja przycisków
                        setThreadedChangeForumButton(false);
                        setThreadedAddForumButton(false);
                        setThreadedDeleteForumButton(false);
                        return;

                        //this.mainForm.Show();
                        // this.Close();

                        break;

                    case 'b':         //case b obsługoje informację o procesie dodawania nowego forum
                        switch (a[1]) //2 znak zawiera informację o sukcesie/porażce
                        {
                        case 'Y':     //sukces
                            SocketStateObject2 state2 = new SocketStateObject2();
                            state2.m_SocketFd = fd;
                            state2.msg        = "";
                            state2.flag       = 7;
                            byte[] Buf2;
                            string mess2;
                            mess2 = state2.flag.ToString() + "\n" + state2.msg.Length + "\n" + state2.msg;
                            Buf2  = Encoding.ASCII.GetBytes(mess2);
                            fd.Send(Buf2, Buf2.Length, 0);        //wysłanie do serwera informacji o chęci odświeżenia listy forów

                            break;

                        case 'N':        //porażka
                            MessageBox.Show("Zla nazwa");
                            break;

                        default:
                            break;
                        }
                        break;

                    case 'a':                                  //wysyłane do użytkowników znajdujących się na usuniętym forum
                        this.setThreadedtextBox4Forumname(""); //czyszczenie okienek
                        this.setThreadedUserListBox("");
                        this.setThreadedChatbox2("");
                        setThreadedRefreshUserButton(false);    //blokada przycisków obsługujących forum
                        setThreadedUserWriteButton(false);
                        setThreadedSendButton(false);

                        MessageBox.Show("Forum zostalo usuniete");

                        break;

                    case '7':    //aktualizuje wyświetlaną listę dostępnych forów
                        setThreadedForumListBox(a.Substring(1));
                        break;

                    case '8':    //aktualizuje wyświetlaną listę dostępnych użytkowników na aktualnym forum
                        setThreadedUserListBox(a.Substring(1));
                        break;

                    default:
                        break;
                    }
                    state = null;
                    state = new SocketStateObject2();
                }
                socketFd.BeginReceive(state.m_DataBuf, 0, 1, 0, new AsyncCallback(ReceiveCallback2), state);
            }
            catch (Exception exc)
            {
                MessageBox.Show("Exception:\t\n" + exc.Message.ToString());
            }
        }