只是一个简单的示例。
Server,服务器代码。
使用Socket套接字连接。
1
using System;
2
using System.Net;
3
using System.Net.Sockets;
4
using System.IO ;
5![](/Images/OutliningIndicators/None.gif)
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![](/Images/dot.gif)
12
Int32 port = 1234;
13![](/Images/OutliningIndicators/InBlock.gif)
14
//IPAddress is connetct ip address
15
//IPAddress addr = IPAddress.Parse("127.0.0.1");
16
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
17![](/Images/OutliningIndicators/InBlock.gif)
18
TcpListener tcpListener = new TcpListener(ipAddress,port);
19
tcpListener.Start();
20
Console.WriteLine("Server Started") ;
21
//Accepts a new connection![](/Images/dot.gif)
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![](/Images/OutliningIndicators/None.gif)
54![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
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![](/Images/OutliningIndicators/None.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
25
private System.ComponentModel.Container components = null;
26![](/Images/OutliningIndicators/InBlock.gif)
27
public Sample()
28
{
29
sb = new ArrayList();
30
InitializeComponent();
31
if(!flag)
32
Connect();
33![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
108
}
109
#endregion
110![](/Images/OutliningIndicators/InBlock.gif)
111
public static void Main()
112
{
113
Sample df=new Sample();
114
df.FormBorderStyle=FormBorderStyle.Fixed3D;
115
Application.Run(df);
116
}
117![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
154
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](/Images/OutliningIndicators/InBlock.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/InBlock.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
168
![](/Images/OutliningIndicators/InBlock.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/InBlock.gif)
171
![](/Images/OutliningIndicators/InBlock.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/InBlock.gif)
174
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](/Images/OutliningIndicators/InBlock.gif)
176
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
177
![](/Images/OutliningIndicators/InBlock.gif)
178
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
179
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
180
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
182
![](/Images/OutliningIndicators/None.gif)