public void ChannelWin_FormClosing(object sender, FormClosingEventArgs e) { if (online) { if (MessageBox.Show("Are you sure you want to disconnect?", "Bismark Chat", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { e.Cancel = true; return; } try { IMData msgToSend = new IMData(); msgToSend.Command = CmdType.Logout; msgToSend.User = userName; msgToSend.Message = null; byte[] b = msgToSend.ToByte(); clientSocket.Send(b, 0, b.Length, SocketFlags.None); clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } catch (SocketException) { } catch (Exception ex) { //MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void OnConnect(IAsyncResult ar) { try { clientSocket.EndConnect(ar); // We are connected so we login into the server IMData msgToSend = new IMData(); msgToSend.Command = CmdType.Login; msgToSend.User = userName; msgToSend.Message = null; byte[] b = msgToSend.ToByte(); // Send the message to the server clientSocket.BeginSend(b, 0, b.Length, SocketFlags.None, new AsyncCallback(OnSend), null); Online(true); } catch (SocketException ex) { UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [ERROR] " + "Unable to connect to the server. The server has either refused the connection, " + "or it is not online. Please check with your administrator."); } catch (Exception ex) { UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [ERROR] " + ex.Message); } }
private void Online(bool value) { try { if (value) { online = true; toolStripButton1.Text = "Disconnect"; toolStripButton1.Image = Properties.Resources.disconnect; IMData msgToSend = new IMData(); msgToSend.Command = CmdType.List; msgToSend.User = userName; msgToSend.Message = null; byteData = msgToSend.ToByte(); clientSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnSend), null); byteData = new byte[1024]; clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null); UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [CONNECTED]"); } else { online = false; ClearClientList(); toolStripButton1.Text = "Connect"; toolStripButton1.Image = Properties.Resources.connect; IMData msgToSend = new IMData(); msgToSend.Command = CmdType.Logout; msgToSend.User = userName; msgToSend.Message = null; byteData = msgToSend.ToByte(); clientSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnSend), null); clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [DISCONNECTED]"); } } catch (Exception ex) { UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [ERROR] " + ex.Message); } }
private void OnReceive(IAsyncResult ar) { try { clientSocket.EndReceive(ar); IMData msgReceived = new IMData(byteData); switch (msgReceived.Command) { case CmdType.Login: AddUser(msgReceived.User); break; case CmdType.Logout: RemoveUser(msgReceived.User); break; case CmdType.Message: break; case CmdType.List: ListUsers(msgReceived.Message); break; } if (msgReceived.Message != null && msgReceived.Command != CmdType.List) { UpdateLog(msgReceived.Message); if (!msgReceived.Message.Contains("SERVER:") && msgReceived.User != userName && !this.Focused) { //fxMessageReceived.Play(); } } byteData = new byte[1024]; clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null); } catch (SocketException) { Online(false); } catch (Exception ex) { // MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void txtMessage_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.SuppressKeyPress = true; if (txtMessage.Focused && txtMessage.Text.Trim() != string.Empty) { try { if (txtMessage.Text.Trim().StartsWith("/clear")) { txtLog.Clear(); txtMessage.Clear(); e.Handled = true; return; } // fxSendMessage.Play(); IMData msgToSend = new IMData(); msgToSend.User = userName; msgToSend.Message = txtMessage.Text.Trim(); msgToSend.Command = CmdType.Message; byte[] byteData = msgToSend.ToByte(); clientSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnSend), null); txtMessage.Clear(); e.Handled = true; } catch (Exception ex) { UpdateLog("[" + DateTime.Now.ToShortTimeString() + "] [ERROR] " + ex.Message); } } } }