只是一个简单的示例。
Server,服务器代码。
使用Socket套接字连接。
1
using System;
2
using System.Net;
3
using System.Net.Sockets;
4
using System.IO ;
5
6
public class Echoserver
7
{
8
//entry point of main method
.
9
public static void Main()
10
{
11
//TcpListener is listening on the given port
12
Int32 port = 1234;
13
14
//IPAddress is connetct ip address
15
//IPAddress addr = IPAddress.Parse("127.0.0.1");
16
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
17
18
TcpListener tcpListener = new TcpListener(ipAddress,port);
19
tcpListener.Start();
20
Console.WriteLine("Server Started") ;
21
//Accepts a new connection
22
Socket socketForClient = tcpListener.AcceptSocket();
23
//StreamWriter and StreamReader Classes for reading and writing the data to and from.
24
//The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client.
25
//Lastly close all the streams.
26
try
27
{
28
if (socketForClient.Connected)
29
{
30
while(true)
31
{
32
Console.WriteLine("Client connected");
33
NetworkStream networkStream = new NetworkStream(socketForClient);
34
StreamWriter streamWriter = new StreamWriter(networkStream);
35
StreamReader streamReader = new StreamReader(networkStream);
36
string line = streamReader.ReadLine();
37
Console.WriteLine("Read:" +line);
38
line=line.ToUpper()+ "!";
39
streamWriter.WriteLine(line);
40
Console.WriteLine("Wrote:"+line);
41
streamWriter.Flush() ;
42
}
43
}
44
socketForClient.Close();
45
Console.WriteLine("Exiting
");
46
}
47
catch(Exception e)
48
{
49
Console.WriteLine(e.ToString()) ;
50
}
51
}
52
}
53
54

2

3

4

5

6

7

8


9

10

11


12

13

14

15

16

17

18

19

20

21


22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45


46

47

48

49

50

51

52

53

54

Client,客户端程序,在文本框中输入字符,将在列表框显示。
1
using System;
2
using System.Text;
3
using System.Drawing;
4
using System.Collections;
5
using System.ComponentModel;
6
using System.Windows.Forms;
7
using System.Net;
8
using System.Net.Sockets;
9
using System.IO;
10
11
namespace SocketSample
12
{
13
public class Sample : System.Windows.Forms.Form
14
{
15
private System.Windows.Forms.Button btS;
16
private System.Windows.Forms.TextBox t1;
17
private NetworkStream networkStream ;
18
private StreamReader streamReader ;
19
private StreamWriter streamWriter ;
20
ArrayList sb;
21
TcpClient myclient;
22
bool flag=false;
23
private System.Windows.Forms.ListBox t2;
24
25
private System.ComponentModel.Container components = null;
26
27
public Sample()
28
{
29
sb = new ArrayList();
30
InitializeComponent();
31
if(!flag)
32
Connect();
33
34
//get a Network stream from the server
35
networkStream = myclient.GetStream();
36
streamReader = new StreamReader(networkStream);
37
streamWriter = new StreamWriter(networkStream);
38
ShowMessage();
39
}
40
41
protected override void Dispose( bool disposing )
42
{
43
if( disposing )
44
{
45
if(components != null)
46
{
47
components.Dispose();
48
}
49
}
50
base.Dispose( disposing );
51
}
52
53
#region Windows 窗体设计器生成的代码
54
/// <summary>
55
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
56
/// 此方法的内容。
57
/// </summary>
58
private void InitializeComponent()
59
{
60
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Sample));
61
this.t1 = new System.Windows.Forms.TextBox();
62
this.btS = new System.Windows.Forms.Button();
63
this.t2 = new System.Windows.Forms.ListBox();
64
this.SuspendLayout();
65
//
66
// t1
67
//
68
this.t1.Location = new System.Drawing.Point(24, 32);
69
this.t1.Name = "t1";
70
this.t1.Size = new System.Drawing.Size(280, 21);
71
this.t1.TabIndex = 0;
72
this.t1.Text = "";
73
this.t1.TextChanged += new System.EventHandler(this.t1_TextChanged);
74
//
75
// btS
76
//
77
this.btS.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btS.BackgroundImage")));
78
this.btS.Enabled = false;
79
this.btS.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
80
this.btS.Location = new System.Drawing.Point(320, 32);
81
this.btS.Name = "btS";
82
this.btS.TabIndex = 1;
83
this.btS.Text = "Send";
84
this.btS.Click += new System.EventHandler(this.btS_Click);
85
//
86
// t2
87
//
88
this.t2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
89
this.t2.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
90
this.t2.ItemHeight = 15;
91
this.t2.Location = new System.Drawing.Point(24, 64);
92
this.t2.Name = "t2";
93
this.t2.Size = new System.Drawing.Size(368, 212);
94
this.t2.TabIndex = 2;
95
//
96
// Sample
97
//
98
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
99
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
100
this.ClientSize = new System.Drawing.Size(416, 297);
101
this.Controls.Add(this.t2);
102
this.Controls.Add(this.btS);
103
this.Controls.Add(this.t1);
104
this.Name = "Sample";
105
this.Text = "Sample";
106
this.ResumeLayout(false);
107
108
}
109
#endregion
110
111
public static void Main()
112
{
113
Sample df=new Sample();
114
df.FormBorderStyle=FormBorderStyle.Fixed3D;
115
Application.Run(df);
116
}
117
118
protected void Connect()
119
{
120
//connect to the "localhost" at the give port
121
//if you have some other server name then you can use that instead of "localhost"
122
123
try
124
{
125
sb.Add("Conneting to Server
");
126
myclient = new TcpClient("localhost", 1234);
127
sb.Add("Conneted,Please enter something in the textbox");
128
}
129
catch
130
{
131
sb.Add(string.Format("Failed to connect to server at {0}:1234", "localhost"));
132
}
133
flag = true;
134
}
135
136
protected void ShowMessage()
137
{
138
for(int i=0;i<sb.Count;i++)
139
{
140
t2.Items.Add((object)sb[i].ToString());
141
}
142
sb.Clear();
143
}
144
145
private void t1_TextChanged(object sender, System.EventArgs e)
146
{
147
if(t1.Text == "" )
148
btS.Enabled = false;
149
else
150
btS.Enabled=true;
151
}
152
153
private void btS_Click(object sender, System.EventArgs e)
154
{
155
if(t1.Text=="")
156
{
157
sb.Add( "Please enter something in the textbox.");
158
t1.Focus();
159
return ;
160
}
161
string s;
162
try
163
{
164
streamWriter.WriteLine(t1.Text);
165
Console.WriteLine("Sending Message");
166
streamWriter.Flush();
167
s= streamReader.ReadLine();
168
Console.WriteLine("Reading Message") ;
169
Console.WriteLine(s) ;
170
sb.Add(s);
171
t1.Text = "";
172
t1.Focus();
173
ShowMessage();
174
}
175
catch
176
{
177
MessageBox.Show("Error.");
178
}
179
}
180
}
181
}
182

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125


126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182
