Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
                    }
                }
            }
        }