1
using System;
2
using System.Drawing;
3
using System.Collections;
4
using System.ComponentModel;
5
using System.Windows.Forms;
6
using System.Data;
7
using System.Text;
8
using System.Net;
9
using System.Net.Sockets;
10
using System.Threading;
11![](/Images/OutliningIndicators/None.gif)
12
namespace TServer
13
{
14
/// <summary>
15
/// Form1 的摘要说明。
16
/// </summary>
17
public class Form1 : System.Windows.Forms.Form
18
{
19
private System.Windows.Forms.TextBox txt;
20
private System.Net.Sockets.Socket server;
21
private System.Windows.Forms.ComboBox cmbIP;
22
private System.Windows.Forms.Button btnStart;
23
private System.Windows.Forms.Button btnStop;
24
private System.Windows.Forms.StatusBar statBar;
25
private System.Threading.ManualResetEvent allDone;
26
private byte[] buffer;
27
/// <summary>
28
/// 必需的设计器变量。
29
/// </summary>
30
private System.ComponentModel.Container components = null;
31![](/Images/OutliningIndicators/InBlock.gif)
32
public Form1()
33
{
34
//
35
// Windows 窗体设计器支持所必需的
36
//
37
InitializeComponent();
38![](/Images/OutliningIndicators/InBlock.gif)
39
//
40
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
41
//
42
}
43![](/Images/OutliningIndicators/InBlock.gif)
44
/// <summary>
45
/// 清理所有正在使用的资源。
46
/// </summary>
47
protected override void Dispose( bool disposing )
48
{
49
if( disposing )
50
{
51
if (components != null)
52
{
53
components.Dispose();
54
}
55
}
56
base.Dispose( disposing );
57
}
58![](/Images/OutliningIndicators/InBlock.gif)
59
Windows 窗体设计器生成的代码
132![](/Images/OutliningIndicators/InBlock.gif)
133
/// <summary>
134
/// 应用程序的主入口点。
135
/// </summary>
136
[STAThread]
137
static void Main()
138
{
139
Application.Run(new Form1());
140
}
141![](/Images/OutliningIndicators/InBlock.gif)
142
private void Form1_Load(object sender, System.EventArgs e)
143
{
144
this.server = new Socket( AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp );
145
this.allDone = new ManualResetEvent( true );
146
this.cmbIP.Items.Clear();
147
foreach( IPAddress ip in Dns.GetHostByName( Dns.GetHostName() ).AddressList )
148
{
149
this.cmbIP.Items.Add( ip.ToString() );
150
}
151
if( this.cmbIP.Items.Count > 0 )
152
this.cmbIP.SelectedIndex = 0;
153
this.statBar.Text = "初始化完成
";
154
this.btnStop.Enabled = false;
155
this.buffer = new byte[ 1024];
156
}
157![](/Images/OutliningIndicators/InBlock.gif)
158
private void btnStart_Click(object sender, System.EventArgs e)
159
{
160
try
161
{
162
IPEndPoint ipep = new IPEndPoint( IPAddress.Parse( this.cmbIP.Text ),9000 );
163
this.server.Bind( (EndPoint)ipep );
164
this.server.Listen( 10 );
165
this.server.BeginAccept( new AsyncCallback( this.AcceptCallback ),this.server );
166
this.statBar.Text = "服务器" + ipep.ToString() + "正在监听
";
167
this.txt.Text = "开始等待客户端连接
";
168
}
169
catch( Exception ex )
170
{
171
this.txt.Text += "\r\n" + ex.ToString();
172
}
173
}
174![](/Images/OutliningIndicators/InBlock.gif)
175
private void AcceptCallback( System.IAsyncResult iar )
176
{
177
if( iar.IsCompleted )
178
{
179
try
180
{
181
Socket oldServer = (Socket)iar.AsyncState;
182
Socket client = (Socket)oldServer.EndAccept( iar );
183
this.txt.Text += "\r\n远程客户端:" + client.RemoteEndPoint.ToString() + "连接
";
184
byte[] send = System.Text.Encoding.Default.GetBytes( "服务器端的响应 at " + DateTime.Now.ToString() );
185
client.BeginSend( send,0,send.Length,SocketFlags.None,new AsyncCallback(this.SendCallback ),client );
186
}
187
catch( Exception ex )
188
{
189
this.txt.Text += "\r\n" + ex.ToString();
190
}
191
}
192
}
193![](/Images/OutliningIndicators/InBlock.gif)
194
private void SendCallback( System.IAsyncResult iar )
195
{
196
try
197
{
198
Socket socket = (Socket)iar.AsyncState;
199
int send = socket.EndSend( iar );
200
this.txt.Text += "\r\n已发送至客户端数据,大小为:" + send.ToString();
201
socket.BeginReceive(this.buffer,0,this.buffer.Length,SocketFlags.None,new AsyncCallback(this.ReceiveCallback),socket );
202
}
203
catch( Exception ex )
204
{
205
this.txt.Text += "\r\n" + ex.ToString();
206
}
207
}
208![](/Images/OutliningIndicators/InBlock.gif)
209
private void StartReceive()
210
{
211
// this.allDone.Reset();
212
// this.server.BeginReceive( this.buffer,0,this.buffer.Length,SocketFlags.None,new AsyncCallback(this.ReceiveCallback ),this.server );
213
// this.allDone.WaitOne();
214
}
215![](/Images/OutliningIndicators/InBlock.gif)
216
private void ReceiveCallback( System.IAsyncResult iar )
217
{
218
try
219
{
220
221
Socket client = (Socket)iar.AsyncState;
222
int recv = client.EndReceive( iar );
223
if( recv == 0 )
224
{
225
client.Close();
226
this.txt.Text += "\r\n等待客户端连接..:";
227
this.server.BeginAccept( new AsyncCallback(this.AcceptCallback),this.server );
228
return;
229
}
230
string msg = System.Text.Encoding.Default.GetString( this.buffer,0,recv );
231
this.txt.Text += "\r\n从" + client.RemoteEndPoint.ToString() + "接收到的数据是:" + msg;
232
byte[] re = System.Text.Encoding.Default.GetBytes( "服务器端已收到:" + msg );
233
client.BeginSend( re,0,re.Length,SocketFlags.None,new AsyncCallback(this.SendCallback ),client );
234
}
235
catch( Exception ex )
236
{
237
this.txt.Text += "\r\n" + ex.ToString();
238
}
239
}
240
}
241
}
242![](/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/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.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/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.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/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/InBlock.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/InBlock.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
167
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
168
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
171
![](/Images/OutliningIndicators/InBlock.gif)
172
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
174
![](/Images/OutliningIndicators/InBlock.gif)
175
![](/Images/OutliningIndicators/InBlock.gif)
176
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
177
![](/Images/OutliningIndicators/InBlock.gif)
178
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
179
![](/Images/OutliningIndicators/InBlock.gif)
180
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
181
![](/Images/OutliningIndicators/InBlock.gif)
182
![](/Images/OutliningIndicators/InBlock.gif)
183
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/dot.gif)
184
![](/Images/OutliningIndicators/InBlock.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
187
![](/Images/OutliningIndicators/InBlock.gif)
188
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
189
![](/Images/OutliningIndicators/InBlock.gif)
190
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
191
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
192
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
193
![](/Images/OutliningIndicators/InBlock.gif)
194
![](/Images/OutliningIndicators/InBlock.gif)
195
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
196
![](/Images/OutliningIndicators/InBlock.gif)
197
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
198
![](/Images/OutliningIndicators/InBlock.gif)
199
![](/Images/OutliningIndicators/InBlock.gif)
200
![](/Images/OutliningIndicators/InBlock.gif)
201
![](/Images/OutliningIndicators/InBlock.gif)
202
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
203
![](/Images/OutliningIndicators/InBlock.gif)
204
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
205
![](/Images/OutliningIndicators/InBlock.gif)
206
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
207
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
208
![](/Images/OutliningIndicators/InBlock.gif)
209
![](/Images/OutliningIndicators/InBlock.gif)
210
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
211
![](/Images/OutliningIndicators/InBlock.gif)
212
![](/Images/OutliningIndicators/InBlock.gif)
213
![](/Images/OutliningIndicators/InBlock.gif)
214
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
215
![](/Images/OutliningIndicators/InBlock.gif)
216
![](/Images/OutliningIndicators/InBlock.gif)
217
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
218
![](/Images/OutliningIndicators/InBlock.gif)
219
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
220
![](/Images/OutliningIndicators/InBlock.gif)
221
![](/Images/OutliningIndicators/InBlock.gif)
222
![](/Images/OutliningIndicators/InBlock.gif)
223
![](/Images/OutliningIndicators/InBlock.gif)
224
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
225
![](/Images/OutliningIndicators/InBlock.gif)
226
![](/Images/OutliningIndicators/InBlock.gif)
227
![](/Images/OutliningIndicators/InBlock.gif)
228
![](/Images/OutliningIndicators/InBlock.gif)
229
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
230
![](/Images/OutliningIndicators/InBlock.gif)
231
![](/Images/OutliningIndicators/InBlock.gif)
232
![](/Images/OutliningIndicators/InBlock.gif)
233
![](/Images/OutliningIndicators/InBlock.gif)
234
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
235
![](/Images/OutliningIndicators/InBlock.gif)
236
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
237
![](/Images/OutliningIndicators/InBlock.gif)
238
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
239
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
240
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
241
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
242
![](/Images/OutliningIndicators/None.gif)