• C# 局域网聊天 发送信息


            //发送大量文本消息
            private void sendMessage()
            {
                if (richTextBox_send.Text.Trim().Length==0 && richTextBox_send.Rtf.IndexOf("pict")<0)
                {
                    MessageBox.Show("发送的消息不能为空");
                    return;
                }
                
                if (Encoding.Default.GetByteCount(richTextBox_send.Text) > 1024*3)
                    {
                        MessageBox.Show("发送的内容过长");
                        return;
                    }
                try
                {
                    //初始化接受套接字:寻址方案,以字符流方式和Tcp通信
                    socketSent = new Socket(AddressFamily.InterNetwork,
                                   SocketType.Stream,
                                   ProtocolType.Tcp);
    
                    //设置目标服务器IP地址和端口
                    ipSent = new IPEndPoint(IPAddress.Parse(ip), 8001);
    
                    //与目标服务器进行连接
                    socketSent.Connect(ipSent);
                    
                    //将要发送的消息转化为字节流,然后发送
                    
    
                    socketSent.Send(Encoding.Default.GetBytes("MSG"));
                    Thread.Sleep(100);
                    //循环发送
                    //设置缓冲区为1024byte
                    byte[] buff = new byte[1024];
                    int len = 0;
                    MemoryStream data = new MemoryStream();
                    richTextBox_accept.Rtf = richTextBox_accept.Rtf.Replace(@"\f1\par", "");
                    richTextBox_send.SaveFile(data, RichTextBoxStreamType.RichText);
                    data.Position = 0;
                    while ((len = data.Read(buff, 0, 1024)) != 0)
                    {
                        //按实际的字节总量发送信息
                        socketSent.Send(buff, 0, len, SocketFlags.None);
                        //richTextBox_accept.AppendText(Encoding.Default.GetString(buff));
                    }
                    data.Close();
                    data.Dispose();
                    socketSent.Send(Encoding.Default.GetBytes("END"));
                    socketSent.Close();
                }
                catch
                {
                    MessageBox.Show(user + "已经下线!");
                    return;
                }
                if (richTextBox_accept.Text != "")
                {
                    richTextBox_accept.SelectionColor = Color.Green;
                    richTextBox_accept.AppendText("\n" + currentUser + " " + DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss") + "\n");
                    richTextBox_accept.SelectionColor = Color.Black;
    
                    richTextBox_accept.Select(richTextBox_accept.Text.Length, 0);
                    richTextBox_accept.SelectedRtf = richTextBox_send.Rtf;
                    richTextBox_accept.Update();
                    richTextBox_accept.Select(richTextBox_accept.Rtf.Length, 0);
                }
                else
                {
                    richTextBox_accept.SelectionColor = Color.Green;
                    richTextBox_accept.AppendText(currentUser + " " + DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss") + "\n");
                    richTextBox_accept.SelectionColor = Color.Black;
    
                    richTextBox_accept.Select(richTextBox_accept.Text.Length, 0);
                    richTextBox_accept.SelectedRtf = richTextBox_send.Rtf;
                    richTextBox_accept.Update();
                    richTextBox_accept.Select(richTextBox_accept.Rtf.Length, 0);
    
                }
                this.richTextBox_send.Clear();
                richTextBox_accept.ScrollToCaret();
            }
    
            private void btn_close_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            //组合键发送消息
            private void richTextBox_send_KeyUp(object sender, KeyEventArgs e)
            {
                if ((Control.ModifierKeys & Keys.Control) != 0 && e.KeyCode == Keys.Enter)
                {
                    if (radioBtn_sendStyle2.Checked)//发送模式选择为Enter+Ctrl
                    { sendMessage(); }
                }
                else if (e.KeyCode == Keys.Enter)
                {
                    if (radioBtn_sendStyle1.Checked)//发送模式选择为Enter
                    {
                        sendMessage();
                    }
                }
            }

  • 相关阅读:
    最新 蓝鲸人java校招面经 (含整理过的面试题大全)
    最新 上海轻轻java校招面经 (含整理过的面试题大全)
    最新 苏州朗动java校招面经 (含整理过的面试题大全)
    最新 医渡云java校招面经 (含整理过的面试题大全)
    变量的自动类型转换和强制类型转换(day01_10)
    java的数据类型(day01_09)
    常用的dos命令操作(day01_03)
    1.镜像-虚拟光驱-光驱
    Spring基于配置文件的方式来配置AOP
    Spring-AOP(切面的优先级&&&重用切点表达式)
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234315.html
Copyright © 2020-2023  润新知