예제 #1
0
파일: Server.cs 프로젝트: FordRelak/ChSV
        // Отправка сообщения от имени администратора
        private void SendM_Click(object sender, EventArgs e)
        {
            string ChatZstr  = STB.Text;
            string StreamMes = "\r\n(" + DateTime.Now.ToString() + ") Server: " + ChatZstr;

            System.IO.BinaryWriter writer1 = null;
            foreach (var item in CO)
            {
                NetworkStream stream1 = null;
                try
                {
                    stream1 = item.client.GetStream();
                }
                catch (Exception)
                {
                }
                if (item.Connected == true)
                {
                    writer1 = new System.IO.BinaryWriter(stream1);
                    writer1.Write(StreamMes);
                }
            }
            ChatTB.Text          += "\r\n(" + DateTime.Now.ToString() + ") Server: " + ChatZstr;
            ChatTB.SelectionStart = ChatTB.Text.Length;
            ChatTB.ScrollToCaret();
            //TcpClient tcpClient = new TcpClient();
            //tcpClient.Connect(IPAddress.Parse("192.168.1.11"), 20000);
        }
예제 #2
0
파일: Form.cs 프로젝트: Opty-MSc/DIDA
 private void RecvMessage(string m)
 {
     if (ChatTB.InvokeRequired)
     {
         ChatTB.BeginInvoke(new MessageArrived(RecvMessage), new object[] { m });
     }
     else
     {
         ChatTB.AppendText(m);
     }
 }
예제 #3
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
 private void OnMessage(string command, string data)
 {
     if (!ChatTB.InvokeRequired)
     {
         ChatTB.AppendText(data + Environment.NewLine);
     }
     else
     {
         object[] value = { command, data };
         Invoke(new NetMessaging.Receiving(OnMessage), value);
     }
 }
예제 #4
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
 private void OnStart(string command, string data)
 {
     if (!ChatTB.InvokeRequired)
     {
         ChatTB.AppendText("Вы можете писать сообщения!" + Environment.NewLine);
         GoMessaging();
     }
     else
     {
         object[] value = { command, data };
         Invoke(new NetMessaging.Receiving(OnStart), value);
     }
 }
예제 #5
0
 private async void RecvMessage(AsyncServerStreamingCall <Message> ssc)
 {
     try {
         await foreach (var msg in ssc.ResponseStream.ReadAllAsync(cts.Token))
         {
             ChatTB.AppendText(msg.M);
         }
     } catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.Cancelled)
     {
         // Stream Cancelled!
     } catch (Exception ex) {
         LeaveChat();
         MessageBox.Show(ex.Message);
     }
 }
예제 #6
0
        private void LeaveChat()
        {
            if (cts != null)
            {
                cts.Cancel();
            }
            if (channel != null)
            {
                channel.Dispose();
            }

            ChatTB.Clear();
            channel = null;
            client  = null;
            cts     = null;
        }
예제 #7
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
        private void OnNameError(int val)
        {
            if (!userNameTB.InvokeRequired && !Entry.InvokeRequired)
            {
                Entry.Enabled      = true;
                userNameTB.Enabled = true;
                Send.Enabled       = false;
                ChatTB.AppendText("Выберите другое имя" + Environment.NewLine);

                ThreadStart th = new ThreadStart(name);
                t4 = new Thread(th);
                t4.Start();
            }
            else
            {
                Invoke(new NetMessaging.Error(OnNameError), 0);
            }
        }
예제 #8
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
 private void OnUserList(string command, string data)
 {
     if (!ChatTB.InvokeRequired)
     {
         var us = data.Split(',');
         ChatTB.AppendText("Список подключенных клиентов:" + Environment.NewLine);
         foreach (var cl in us)
         {
             ChatTB.Text += cl + ",";
         }
         ChatTB.Text += "\r\n";
         ChatTB.AppendText("___________________________" + Environment.NewLine);
     }
     else
     {
         object[] value = { command, data };
         Invoke(new NetMessaging.Receiving(OnUserList), value);
     }
 }
예제 #9
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
        private void Choice_Click(object sender, EventArgs e)
        {
            var    sHost = "SMAKBOOK";
            String usHost;

            usHost             = AddressTB.Text;
            userNameTB.Enabled = true;
            Entry.Enabled      = true;
            if (usHost.Length > 0)
            {
                sHost = usHost;
            }
            try
            {
                serverHost        = sHost;
                AddressTB.Enabled = false;
                Choice.Enabled    = false;
                ChatTB.AppendText("Подключение к " + sHost + Environment.NewLine);
                cSocket = new Socket(SocketType.Stream, ProtocolType.Tcp);
                cSocket.Connect(this.serverHost, port);
                net = new NetMessaging(cSocket);
                net.LoginCmdReceived    += OnLogin;
                net.UserListCmdReceived += OnUserList;
                net.StartCmdReceived    += OnStart;
                net.MessageCmdReceived  += OnMessage;
                net.EventComment        += OnComment;
                net.EventError          += OnNameError;
                //
                ThreadStart th = new ThreadStart(Communicate);
                t1 = new Thread(th);
                t1.Start();
            }
            catch (Exception ex)
            {
                OnComment("Что-то пошло не так... :(");
            }
        }
예제 #10
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
 private void Form1_Load(object sender, EventArgs e)
 {
     ChatTB.AppendText("Старт работы клиента..." + Environment.NewLine);
     ChatTB.AppendText("Введите адрес сервера или нажмите Send для использования стандартного: " + Environment.NewLine);
 }
예제 #11
0
파일: Form1.cs 프로젝트: MilyaZ/Chat
 private void ChatTB_TextChanged(object sender, EventArgs e)
 {
     ChatTB.SelectionStart = ChatTB.TextLength;
     ChatTB.ScrollToCaret();
 }