运行效果图如下:

Server:

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

 25        delegate void UpdateDelegate(string text);
 26        void Update(string text)
 27        {
 28            if (InvokeRequired)
 29            {
 30                BeginInvoke(new UpdateDelegate(Update), new object[] { text });
 31                return;
 32            }

 33            txtSended.Text += text;
 34        }

 35        private void FormServer_Load(object sender, EventArgs e)
 36        {
 37            threadServer = new Thread(new ThreadStart(StartServer));
 38            threadServer.IsBackground = true;
 39            threadServer.Start();
 40        }

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

 71                }

 72                socketForClient.Close();
 73            }

 74            catch (Exception ex)
 75            {
 76                MessageBox.Show(ex.Message.ToString());
 77            }

 78        }

 79        private void btnClose_Click(object sender, EventArgs e)
 80        {
 81            this.Close();
 82        }

 83        private void btnSend_Click(object sender, EventArgs e)
 84        {
 85            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 86            {
 87                txtSending.Focus();
 88                return;
 89            }

 90            streamWriter.WriteLine(txtSending.Text.Trim());
 91            streamWriter.Flush();
 92            string time = DateTime.Now.Hour.ToString().Length == 1 ? "0" + DateTime.Now.Hour.ToString() : DateTime.Now.Hour.ToString() + ":";
 93            time += DateTime.Now.Minute.ToString().Length == 1 ? "0" + DateTime.Now.Minute.ToString() : DateTime.Now.Minute.ToString();
 94            time += ":";
 95            time += DateTime.Now.Second.ToString().Length == 1 ? "0" + DateTime.Now.Second.ToString() : DateTime.Now.Second.ToString();
 96            txtSended.Text += "服务器 " + time+"\r\n";
 97            txtSended.Text += "  " + txtSending.Text.Trim() + "\r\n";
 98            txtSending.Text = "";
 99            txtSending.Focus();
100        }

101
102        private void txtSending_TextChanged(object sender, EventArgs e)
103        {
104            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
105                btnSend.Enabled = false;
106            else
107                btnSend.Enabled = true;
108        }

109    }

110}

 

Client:

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

 37        delegate void UpdateDelegate(string text);
 38        private void Update(string text)
 39        {
 40            if (InvokeRequired)
 41            {
 42                BeginInvoke(new UpdateDelegate(Update), new object[] { text });
 43                return;
 44            }

 45            txtSended.Text += text;
 46        }

 47        private void Connect()
 48        {
 49            try
 50            {
 51                Update("正在连接服务器" + "\r\n");
 52                myclient = new TcpClient("localhost"1234);
 53                Update("已成功连接服务器" + "\r\n");
 54                Update("——————————————\r\n");
 55            }

 56            catch
 57            {
 58                Update(string.Format("连接服务器{0}:1234失败.!\r\n""localhost"));
 59            }

 60            flag = true;
 61        }

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

 80                }

 81            }

 82            catch (Exception ex)
 83            {
 84                MessageBox.Show(ex.Message);
 85            }

 86        }

 87        private void txtSending_TextChanged(object sender, EventArgs e)
 88        {
 89            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 90                btnSend.Enabled = false;
 91            else
 92                btnSend.Enabled = true;
 93        }

 94
 95        private void btnSend_Click(object sender, EventArgs e)
 96        {
 97            if (String.IsNullOrEmpty(txtSending.Text.Trim()))
 98            {
 99                txtSending.Focus();
100                return;
101            }

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

115            catch
116            {
117                MessageBox.Show("与服务器的连接已断开\r\n");
118            }
 
119
120        }

121
122        private void btnClose_Click(object sender, EventArgs e)
123        {
124            this.Close();
125        }

126    }

127}

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

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

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

btnSend为发送按钮.

btnClose为关闭按钮.

posted on 2009-05-06 12:42  arong.NET  阅读(355)  评论(1编辑  收藏  举报