运行效果图如下:


Server:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
using System.IO;
9
using System.Net;
10
using System.Net.Sockets;
11
using System.Threading;
12
13
namespace 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
}
using System;2
using System.Collections.Generic;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Text;7
using System.Windows.Forms;8
using System.IO;9
using System.Net;10
using System.Net.Sockets;11
using System.Threading;12

13
namespace Server14
{15
public partial class FormServer : Form16
{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
try50
{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
else107
btnSend.Enabled = true;108
}109
}110
}
Client:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
using System.IO;
9
using System.Net;
10
using System.Net.Sockets;
11
using System.Collections;
12
using System.Threading;
13
14
namespace 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
}
using System;2
using System.Collections.Generic;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Text;7
using System.Windows.Forms;8
using System.IO;9
using System.Net;10
using System.Net.Sockets;11
using System.Collections;12
using System.Threading;13

14
namespace Client15
{16
public partial class FormClient : Form17
{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
try50
{51
Update("正在连接服务器
" + "\r\n");52
myclient = new TcpClient("localhost", 1234);53
Update("已成功连接服务器
" + "\r\n");54
Update("——————————————\r\n");55
}56
catch57
{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
try66
{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
else92
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
try103
{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
catch116
{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为关闭按钮.

浙公网安备 33010602011771号