运行效果图如下:

基于C/S的通信聊天程序.

基于C/S的通信聊天程序.

Server:

  1基于C/S的通信聊天程序.using System;
  2基于C/S的通信聊天程序.using System.Collections.Generic;
  3基于C/S的通信聊天程序.using System.ComponentModel;
  4基于C/S的通信聊天程序.using System.Data;
  5基于C/S的通信聊天程序.using System.Drawing;
  6基于C/S的通信聊天程序.using System.Text;
  7基于C/S的通信聊天程序.using System.Windows.Forms;
  8基于C/S的通信聊天程序.using System.IO;
  9基于C/S的通信聊天程序.using System.Net;
 10基于C/S的通信聊天程序.using System.Net.Sockets;
 11基于C/S的通信聊天程序.using System.Threading;
 12基于C/S的通信聊天程序.
 13基于C/S的通信聊天程序.namespace Server
 14基于C/S的通信聊天程序.基于C/S的通信聊天程序.基于C/S的通信聊天程序.{
 15基于C/S的通信聊天程序.    public partial class FormServer : Form
 16基于C/S的通信聊天程序.基于C/S的通信聊天程序.    基于C/S的通信聊天程序.{
 17基于C/S的通信聊天程序.        private NetworkStream networkStream;
 18基于C/S的通信聊天程序.        private StreamWriter streamWriter;
 19基于C/S的通信聊天程序.        private StreamReader streamReader;
 20基于C/S的通信聊天程序.        private Thread threadServer;
 21基于C/S的通信聊天程序.        public FormServer()
 22基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 23基于C/S的通信聊天程序.            InitializeComponent();
 24基于C/S的通信聊天程序.        }

 25基于C/S的通信聊天程序.        delegate void UpdateDelegate(string text);
 26基于C/S的通信聊天程序.        void Update(string text)
 27基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 28基于C/S的通信聊天程序.            if (InvokeRequired)
 29基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 30基于C/S的通信聊天程序.基于C/S的通信聊天程序.                BeginInvoke(new UpdateDelegate(Update), new object[] 基于C/S的通信聊天程序.{ text });
 31基于C/S的通信聊天程序.                return;
 32基于C/S的通信聊天程序.            }

 33基于C/S的通信聊天程序.            txtSended.Text += text;
 34基于C/S的通信聊天程序.        }

 35基于C/S的通信聊天程序.        private void FormServer_Load(object sender, EventArgs e)
 36基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 37基于C/S的通信聊天程序.            threadServer = new Thread(new ThreadStart(StartServer));
 38基于C/S的通信聊天程序.            threadServer.IsBackground = true;
 39基于C/S的通信聊天程序.            threadServer.Start();
 40基于C/S的通信聊天程序.        }

 41基于C/S的通信聊天程序.        private void StartServer()
 42基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 43基于C/S的通信聊天程序.            Int32 port = 1234;
 44基于C/S的通信聊天程序.            IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
 45基于C/S的通信聊天程序.            TcpListener tcpListener = new TcpListener(ipAddress, port);
 46基于C/S的通信聊天程序.            tcpListener.Start();
 47基于C/S的通信聊天程序.            Socket socketForClient= tcpListener.AcceptSocket();
 48基于C/S的通信聊天程序.            string text=String.Empty;
 49基于C/S的通信聊天程序.            try
 50基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 51基于C/S的通信聊天程序.                if (socketForClient.Connected)
 52基于C/S的通信聊天程序.基于C/S的通信聊天程序.                基于C/S的通信聊天程序.{
 53基于C/S的通信聊天程序.                    text="客户端已连接基于C/S的通信聊天程序.\r\n";
 54基于C/S的通信聊天程序.                    text+="——————————————\r\n";
 55基于C/S的通信聊天程序.                    Update(text);
 56基于C/S的通信聊天程序.                    while (true)
 57基于C/S的通信聊天程序.基于C/S的通信聊天程序.                    基于C/S的通信聊天程序.{
 58基于C/S的通信聊天程序.                        networkStream = new NetworkStream(socketForClient);
 59基于C/S的通信聊天程序.                        streamWriter = new StreamWriter(networkStream);
 60基于C/S的通信聊天程序.                        streamReader = new StreamReader(networkStream);
 61基于C/S的通信聊天程序.                        string message=streamReader.ReadLine();
 62基于C/S的通信聊天程序.                        string time = DateTime.Now.Hour.ToString().Length == 1 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString() + ":";
 63基于C/S的通信聊天程序.                        time += DateTime.Now.Minute.ToString().Length == 1 ? "0" + DateTime.Now.Minute.ToString() : DateTime.Now.Minute.ToString();
 64基于C/S的通信聊天程序.                        time+=":";
 65基于C/S的通信聊天程序.                        time += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString();
 66基于C/S的通信聊天程序.                        text = "客户端 " + time + "\r\n";
 67基于C/S的通信聊天程序.                        text += "   " + message + "\r\n";
 68基于C/S的通信聊天程序.                        Update(text);
 69基于C/S的通信聊天程序.                        streamWriter.Flush();
 70基于C/S的通信聊天程序.                    }

 71基于C/S的通信聊天程序.                }

 72基于C/S的通信聊天程序.                socketForClient.Close();
 73基于C/S的通信聊天程序.            }

 74基于C/S的通信聊天程序.            catch (Exception ex)
 75基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 76基于C/S的通信聊天程序.                MessageBox.Show(ex.Message.ToString());
 77基于C/S的通信聊天程序.            }

 78基于C/S的通信聊天程序.        }

 79基于C/S的通信聊天程序.        private void btnClose_Click(object sender, EventArgs e)
 80基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 81基于C/S的通信聊天程序.            this.Close();
 82基于C/S的通信聊天程序.        }

 83基于C/S的通信聊天程序.        private void btnSend_Click(object sender, EventArgs e)
 84基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 85基于C/S的通信聊天程序.            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 86基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 87基于C/S的通信聊天程序.                txtSending.Focus();
 88基于C/S的通信聊天程序.                return;
 89基于C/S的通信聊天程序.            }

 90基于C/S的通信聊天程序.            streamWriter.WriteLine(txtSending.Text.Trim());
 91基于C/S的通信聊天程序.            streamWriter.Flush();
 92基于C/S的通信聊天程序.            string time = DateTime.Now.Hour.ToString().Length == 1 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString() + ":";
 93基于C/S的通信聊天程序.            time += DateTime.Now.Minute.ToString().Length == 1 ? "0" + DateTime.Now.Minute.ToString() : DateTime.Now.Minute.ToString();
 94基于C/S的通信聊天程序.            time += ":";
 95基于C/S的通信聊天程序.            time += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString();
 96基于C/S的通信聊天程序.            txtSended.Text += "服务器 " + time+"\r\n";
 97基于C/S的通信聊天程序.            txtSended.Text += "  " + txtSending.Text.Trim() + "\r\n";
 98基于C/S的通信聊天程序.            txtSending.Text = "";
 99基于C/S的通信聊天程序.            txtSending.Focus();
100基于C/S的通信聊天程序.        }

101基于C/S的通信聊天程序.
102基于C/S的通信聊天程序.        private void txtSending_TextChanged(object sender, EventArgs e)
103基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
104基于C/S的通信聊天程序.            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
105基于C/S的通信聊天程序.                btnSend.Enabled = false;
106基于C/S的通信聊天程序.            else
107基于C/S的通信聊天程序.                btnSend.Enabled = true;
108基于C/S的通信聊天程序.        }

109基于C/S的通信聊天程序.    }

110基于C/S的通信聊天程序.}

 

Client:

  1基于C/S的通信聊天程序.using System;
  2基于C/S的通信聊天程序.using System.Collections.Generic;
  3基于C/S的通信聊天程序.using System.ComponentModel;
  4基于C/S的通信聊天程序.using System.Data;
  5基于C/S的通信聊天程序.using System.Drawing;
  6基于C/S的通信聊天程序.using System.Text;
  7基于C/S的通信聊天程序.using System.Windows.Forms;
  8基于C/S的通信聊天程序.using System.IO;
  9基于C/S的通信聊天程序.using System.Net;
 10基于C/S的通信聊天程序.using System.Net.Sockets;
 11基于C/S的通信聊天程序.using System.Collections;
 12基于C/S的通信聊天程序.using System.Threading;
 13基于C/S的通信聊天程序.
 14基于C/S的通信聊天程序.namespace Client
 15基于C/S的通信聊天程序.基于C/S的通信聊天程序.基于C/S的通信聊天程序.{
 16基于C/S的通信聊天程序.    public partial class FormClient : Form
 17基于C/S的通信聊天程序.基于C/S的通信聊天程序.    基于C/S的通信聊天程序.{
 18基于C/S的通信聊天程序.        private NetworkStream networkStream;
 19基于C/S的通信聊天程序.        private StreamReader streamReader;
 20基于C/S的通信聊天程序.        private StreamWriter streamWriter;
 21基于C/S的通信聊天程序.        ArrayList sb;
 22基于C/S的通信聊天程序.        TcpClient myclient;
 23基于C/S的通信聊天程序.        private Thread threadClient;
 24基于C/S的通信聊天程序.        bool flag = false;
 25基于C/S的通信聊天程序.        public FormClient()
 26基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 27基于C/S的通信聊天程序.            InitializeComponent();
 28基于C/S的通信聊天程序.            sb = new ArrayList();
 29基于C/S的通信聊天程序.            if (!flag) Connect();
 30基于C/S的通信聊天程序.            networkStream = myclient.GetStream();
 31基于C/S的通信聊天程序.            streamReader = new StreamReader(networkStream);
 32基于C/S的通信聊天程序.            streamWriter = new StreamWriter(networkStream);
 33基于C/S的通信聊天程序.            threadClient = new Thread(new ThreadStart(RecieveMessage));
 34基于C/S的通信聊天程序.            threadClient.IsBackground = true;
 35基于C/S的通信聊天程序.            threadClient.Start();
 36基于C/S的通信聊天程序.        }

 37基于C/S的通信聊天程序.        delegate void UpdateDelegate(string text);
 38基于C/S的通信聊天程序.        private void Update(string text)
 39基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 40基于C/S的通信聊天程序.            if (InvokeRequired)
 41基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 42基于C/S的通信聊天程序.基于C/S的通信聊天程序.                BeginInvoke(new UpdateDelegate(Update), new object[] 基于C/S的通信聊天程序.{ text });
 43基于C/S的通信聊天程序.                return;
 44基于C/S的通信聊天程序.            }

 45基于C/S的通信聊天程序.            txtSended.Text += text;
 46基于C/S的通信聊天程序.        }

 47基于C/S的通信聊天程序.        private void Connect()
 48基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 49基于C/S的通信聊天程序.            try
 50基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 51基于C/S的通信聊天程序.                Update("正在连接服务器基于C/S的通信聊天程序." + "\r\n");
 52基于C/S的通信聊天程序.                myclient = new TcpClient("localhost"1234);
 53基于C/S的通信聊天程序.                Update("已成功连接服务器基于C/S的通信聊天程序." + "\r\n");
 54基于C/S的通信聊天程序.                Update("——————————————\r\n");
 55基于C/S的通信聊天程序.            }

 56基于C/S的通信聊天程序.            catch
 57基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 58基于C/S的通信聊天程序.                Update(string.Format("连接服务器{0}:1234失败.!\r\n""localhost"));
 59基于C/S的通信聊天程序.            }

 60基于C/S的通信聊天程序.            flag = true;
 61基于C/S的通信聊天程序.        }

 62基于C/S的通信聊天程序.        private void RecieveMessage()
 63基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 64基于C/S的通信聊天程序.            string text = String.Empty;
 65基于C/S的通信聊天程序.            try
 66基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 67基于C/S的通信聊天程序.                if (flag)
 68基于C/S的通信聊天程序.基于C/S的通信聊天程序.                基于C/S的通信聊天程序.{
 69基于C/S的通信聊天程序.                    while (true)
 70基于C/S的通信聊天程序.基于C/S的通信聊天程序.                    基于C/S的通信聊天程序.{
 71基于C/S的通信聊天程序.                        string message = streamReader.ReadLine();
 72基于C/S的通信聊天程序.                        string time = DateTime.Now.Hour.ToString().Length == 1 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString() + ":";
 73基于C/S的通信聊天程序.                        time += DateTime.Now.Minute.ToString().Length == 1 ? "0" + DateTime.Now.Minute.ToString() : DateTime.Now.Minute.ToString();
 74基于C/S的通信聊天程序.                        time += ":";
 75基于C/S的通信聊天程序.                        time += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString();
 76基于C/S的通信聊天程序.                        text = "服务器 " + time + "\r\n";
 77基于C/S的通信聊天程序.                        text += "  " + message + "\r\n";
 78基于C/S的通信聊天程序.                        Update(text);
 79基于C/S的通信聊天程序.                    }

 80基于C/S的通信聊天程序.                }

 81基于C/S的通信聊天程序.            }

 82基于C/S的通信聊天程序.            catch (Exception ex)
 83基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 84基于C/S的通信聊天程序.                MessageBox.Show(ex.Message);
 85基于C/S的通信聊天程序.            }

 86基于C/S的通信聊天程序.        }

 87基于C/S的通信聊天程序.        private void txtSending_TextChanged(object sender, EventArgs e)
 88基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 89基于C/S的通信聊天程序.            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 90基于C/S的通信聊天程序.                btnSend.Enabled = false;
 91基于C/S的通信聊天程序.            else
 92基于C/S的通信聊天程序.                btnSend.Enabled = true;
 93基于C/S的通信聊天程序.        }

 94基于C/S的通信聊天程序.
 95基于C/S的通信聊天程序.        private void btnSend_Click(object sender, EventArgs e)
 96基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
 97基于C/S的通信聊天程序.            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 98基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
 99基于C/S的通信聊天程序.                txtSending.Focus();
100基于C/S的通信聊天程序.                return;
101基于C/S的通信聊天程序.            }

102基于C/S的通信聊天程序.            try
103基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
104基于C/S的通信聊天程序.                streamWriter.WriteLine(txtSending.Text.Trim());
105基于C/S的通信聊天程序.                streamWriter.Flush();
106基于C/S的通信聊天程序.                string time = DateTime.Now.Hour.ToString().Length == 1 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString() + ":";
107基于C/S的通信聊天程序.                time += DateTime.Now.Minute.ToString().Length == 1 ? "0" + DateTime.Now.Minute.ToString() : DateTime.Now.Minute.ToString();
108基于C/S的通信聊天程序.                time += ":";
109基于C/S的通信聊天程序.                time += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString();
110基于C/S的通信聊天程序.                txtSended.Text += "客户端 " + time + "\r\n";
111基于C/S的通信聊天程序.                txtSended.Text += "   "+txtSending.Text.Trim() + "\r\n";
112基于C/S的通信聊天程序.                txtSending.Text = "";
113基于C/S的通信聊天程序.                txtSending.Focus();
114基于C/S的通信聊天程序.            }

115基于C/S的通信聊天程序.            catch
116基于C/S的通信聊天程序.基于C/S的通信聊天程序.            基于C/S的通信聊天程序.{
117基于C/S的通信聊天程序.                MessageBox.Show("与服务器的连接已断开基于C/S的通信聊天程序.\r\n");
118基于C/S的通信聊天程序.            }
 
119基于C/S的通信聊天程序.
120基于C/S的通信聊天程序.        }

121基于C/S的通信聊天程序.
122基于C/S的通信聊天程序.        private void btnClose_Click(object sender, EventArgs e)
123基于C/S的通信聊天程序.基于C/S的通信聊天程序.        基于C/S的通信聊天程序.{
124基于C/S的通信聊天程序.            this.Close();
125基于C/S的通信聊天程序.        }

126基于C/S的通信聊天程序.    }

127基于C/S的通信聊天程序.}

由于篇幅原因窗体代码就不提供了..直接参考上面的窗体图.

txtSended为窗体中上边的文本框.

txtSending为窗体中下边的文本框.

btnSend为发送按钮.

btnClose为关闭按钮.

转载于:https://www.cnblogs.com/arongbest/archive/2009/05/06/1450581.html

相关文章:

  • 2021-05-23
  • 2021-04-06
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2021-08-21
  • 2022-02-24
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-11
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-02-11
  • 2021-12-25
相关资源
相似解决方案