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); }
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 }
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()); } }
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 }
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 }
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()); }
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()); } }