运行效果图如下:
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}
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}
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为关闭按钮.