1 #region 程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
2 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll
3 #endregion
4
5 using System.Collections;
6 using System.Collections.Generic;
7 using System.Runtime;
8
9 namespace System.Net.Sockets
10 {
11 //
12 // 摘要:
13 // 实现 Berkeley 套接字接口。
14 public class Socket : IDisposable
15 {
16 //
17 // 摘要:
18 // 使用 System.Net.Sockets.Socket.DuplicateAndClose(System.Int32) 返回的指定的值初始化 System.Net.Sockets.Socket
19 // 类的新实例。
20 //
21 // 参数:
22 // socketInformation:
23 // System.Net.Sockets.Socket.DuplicateAndClose(System.Int32) 返回的套接字信息。
24 public Socket(SocketInformation socketInformation);
25 //
26 // 摘要:
27 // 使用指定的地址族、套接字类型和协议初始化 System.Net.Sockets.Socket 类的新实例。
28 //
29 // 参数:
30 // addressFamily:
31 // System.Net.Sockets.AddressFamily 值之一。
32 //
33 // socketType:
34 // System.Net.Sockets.SocketType 值之一。
35 //
36 // protocolType:
37 // System.Net.Sockets.ProtocolType 值之一。
38 //
39 // 异常:
40 // T:System.Net.Sockets.SocketException:
41 // addressFamily、socketType 和 protocolType 的组合会导致无效套接字。
42 public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType);
43
44 //
45 // 摘要:
46 // System.Net.Sockets.Socket 类使用的可用资源。
47 ~Socket();
48
49 //
50 // 摘要:
51 // 指示基础操作系统和网络适配器是否支持 Internet 协议第 4 版 (IPv4)。
52 //
53 // 返回结果:
54 // 如果操作系统和网络适配器支持 IPv4 协议,则为 true;否则为 false。
55 public static bool OSSupportsIPv4 { get; }
56 //
57 // 摘要:
58 // 指示基础操作系统和网络适配器是否支持 Internet 协议第 6 版 (IPv6)。
59 //
60 // 返回结果:
61 // 如果操作系统和网络适配器支持 IPv6 协议,则为 true;否则为 false。
62 public static bool OSSupportsIPv6 { get; }
63 //
64 // 摘要:
65 // 获取一个值,该值指示在当前主机上 IPv4 支持是否可用并且已启用。
66 //
67 // 返回结果:
68 // 如果当前主机支持 IPv4 协议,则为 true;否则为 false。
69 [Obsolete("SupportsIPv4 is obsoleted for this type, please use OSSupportsIPv4 instead. http://go.microsoft.com/fwlink/?linkid=14202")]
70 public static bool SupportsIPv4 { get; }
71 //
72 // 摘要:
73 // 获取一个值,该值指示 Framework 对某些已过时的 System.Net.Dns 成员是否支持 IPv6。
74 //
75 // 返回结果:
76 // 如果 Framework 对某些已过时的 System.Net.Dns 方法支持 IPv6,则为 true;否则为 false。
77 [Obsolete("SupportsIPv6 is obsoleted for this type, please use OSSupportsIPv6 instead. http://go.microsoft.com/fwlink/?linkid=14202")]
78 public static bool SupportsIPv6 { get; }
79 //
80 // 摘要:
81 // 获取 System.Net.Sockets.Socket 的地址族。
82 //
83 // 返回结果:
84 // System.Net.Sockets.AddressFamily 值之一。
85 public AddressFamily AddressFamily { get; }
86 //
87 // 摘要:
88 // 获取已经从网络接收且可供读取的数据量。
89 //
90 // 返回结果:
91 // 从网络接收的、可供读取的数据的字节数。
92 //
93 // 异常:
94 // T:System.Net.Sockets.SocketException:
95 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
96 //
97 // T:System.ObjectDisposedException:
98 // System.Net.Sockets.Socket 已关闭。
99 public int Available { get; }
100 //
101 // 摘要:
102 // 获取或设置一个值,该值指示 System.Net.Sockets.Socket 是否处于阻止模式。
103 //
104 // 返回结果:
105 // 如果 System.Net.Sockets.Socket 将阻止,则为 true;否则为 false。默认值为 true。
106 //
107 // 异常:
108 // T:System.Net.Sockets.SocketException:
109 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
110 //
111 // T:System.ObjectDisposedException:
112 // System.Net.Sockets.Socket 已关闭。
113 public bool Blocking { get; set; }
114 //
115 // 摘要:
116 // 获取一个值,该值指示 System.Net.Sockets.Socket 是在上次 Overload:System.Net.Sockets.Socket.Send
117 // 还是 Overload:System.Net.Sockets.Socket.Receive 操作时连接到远程主机。
118 //
119 // 返回结果:
120 // 如果 System.Net.Sockets.Socket 在最近操作时连接到远程资源,则为 true;否则为 false。
121 public bool Connected { get; }
122 //
123 // 摘要:
124 // 获取或设置 System.Boolean 值,该值指定 System.Net.Sockets.Socket 是否允许将 Internet 协议 (IP)
125 // 数据报分段。
126 //
127 // 返回结果:
128 // 如果 System.Net.Sockets.Socket 允许数据报分段,则为 true;否则为 false。默认值为 true。
129 //
130 // 异常:
131 // T:System.NotSupportedException:
132 // 只有对于在 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
133 // 族中的套接字,才可以设置此属性。
134 //
135 // T:System.Net.Sockets.SocketException:
136 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
137 //
138 // T:System.ObjectDisposedException:
139 // System.Net.Sockets.Socket 已关闭。
140 public bool DontFragment { get; set; }
141 //
142 // 摘要:
143 // 获取或设置一个 System.Boolean 值,该值指定 System.Net.Sockets.Socket 是否可以发送或接收广播数据包。
144 //
145 // 返回结果:
146 // 如果 System.Net.Sockets.Socket 允许广播数据包,则为 true;否则为 false。默认值为 false。
147 //
148 // 异常:
149 // T:System.Net.Sockets.SocketException:
150 // 此选项仅对数据报套接字有效。
151 //
152 // T:System.ObjectDisposedException:
153 // System.Net.Sockets.Socket 已关闭。
154 public bool EnableBroadcast { get; set; }
155 //
156 // 摘要:
157 // 获取或设置 System.Boolean 值,该值指定 System.Net.Sockets.Socket 是否仅允许一个进程绑定到端口。
158 //
159 // 返回结果:
160 // 如果 System.Net.Sockets.Socket 仅允许一个套接字绑定到特定端口,则为 true;否则为 false。对于 Windows Server
161 // 2003 和 Windows XP Service Pack 2,默认值为 true,对于其他所有版本,默认值为 false。
162 //
163 // 异常:
164 // T:System.Net.Sockets.SocketException:
165 // 尝试访问套接字时发生错误。
166 //
167 // T:System.ObjectDisposedException:
168 // System.Net.Sockets.Socket 已关闭。
169 //
170 // T:System.InvalidOperationException:
171 // 已为此 System.Net.Sockets.Socket 调用了 System.Net.Sockets.Socket.Bind(System.Net.EndPoint)。
172 public bool ExclusiveAddressUse { get; set; }
173 //
174 // 摘要:
175 // 获取 System.Net.Sockets.Socket 的操作系统句柄。
176 //
177 // 返回结果:
178 // 一个 System.IntPtr,它表示 System.Net.Sockets.Socket 的操作系统句柄。
179 public IntPtr Handle { get; }
180 //
181 // 摘要:
182 // 获取一个值,该值指示 System.Net.Sockets.Socket 是否绑定到特定本地端口。
183 //
184 // 返回结果:
185 // 如果 System.Net.Sockets.Socket 绑定到本地端口,则为 true;否则为 false。
186 public bool IsBound { get; }
187 //
188 // 摘要:
189 // 获取或设置一个值,该值指定 System.Net.Sockets.Socket 在尝试发送所有挂起数据时是否延迟关闭套接字。
190 //
191 // 返回结果:
192 // 一个 System.Net.Sockets.LingerOption,它指定关闭套接字时如何逗留。
193 //
194 // 异常:
195 // T:System.Net.Sockets.SocketException:
196 // 尝试访问套接字时发生错误。
197 //
198 // T:System.ObjectDisposedException:
199 // System.Net.Sockets.Socket 已关闭。
200 public LingerOption LingerState { get; set; }
201 //
202 // 摘要:
203 // 获取本地终结点。
204 //
205 // 返回结果:
206 // System.Net.Sockets.Socket 当前用以进行通信的 System.Net.EndPoint。
207 //
208 // 异常:
209 // T:System.Net.Sockets.SocketException:
210 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
211 //
212 // T:System.ObjectDisposedException:
213 // System.Net.Sockets.Socket 已关闭。
214 public EndPoint LocalEndPoint { get; }
215 //
216 // 摘要:
217 // 获取或设置一个值,该值指定传出的多路广播数据包是否传递到发送应用程序。
218 //
219 // 返回结果:
220 // 如果 System.Net.Sockets.Socket 接收传出的多路广播数据包,则为 true;否则为 false。
221 //
222 // 异常:
223 // T:System.Net.Sockets.SocketException:
224 // 尝试访问套接字时发生错误。
225 //
226 // T:System.ObjectDisposedException:
227 // System.Net.Sockets.Socket 已关闭。
228 public bool MulticastLoopback { get; set; }
229 //
230 // 摘要:
231 // 获取或设置 System.Boolean 值,该值指定流 System.Net.Sockets.Socket 是否正在使用 Nagle 算法。
232 //
233 // 返回结果:
234 // 如果 System.Net.Sockets.Socket 使用 Nagle 算法,则为 false;否则为 true。默认值为 false。
235 //
236 // 异常:
237 // T:System.Net.Sockets.SocketException:
238 // 尝试访问 System.Net.Sockets.Socket 时发生错误。有关更多信息,请参见备注部分。
239 //
240 // T:System.ObjectDisposedException:
241 // System.Net.Sockets.Socket 已关闭。
242 public bool NoDelay { get; set; }
243 //
244 // 摘要:
245 // 获取 System.Net.Sockets.Socket 的协议类型。
246 //
247 // 返回结果:
248 // System.Net.Sockets.ProtocolType 值之一。
249 public ProtocolType ProtocolType { get; }
250 //
251 // 摘要:
252 // 获取或设置一个值,它指定 System.Net.Sockets.Socket 接收缓冲区的大小。
253 //
254 // 返回结果:
255 // System.Int32,它包含接收缓冲区的大小(以字节为单位)。默认值为 8192。
256 //
257 // 异常:
258 // T:System.Net.Sockets.SocketException:
259 // 尝试访问套接字时发生错误。
260 //
261 // T:System.ObjectDisposedException:
262 // System.Net.Sockets.Socket 已关闭。
263 //
264 // T:System.ArgumentOutOfRangeException:
265 // 为设置操作指定的值小于 0。
266 public int ReceiveBufferSize { get; set; }
267 //
268 // 摘要:
269 // 获取或设置一个值,该值指定之后同步 Overload:System.Net.Sockets.Socket.Receive 调用将超时的时间长度。
270 //
271 // 返回结果:
272 // 超时值(以毫秒为单位)。默认值为 0,指示超时期限无限大。指定 -1 还会指示超时期限无限大。
273 //
274 // 异常:
275 // T:System.Net.Sockets.SocketException:
276 // 尝试访问套接字时发生错误。
277 //
278 // T:System.ObjectDisposedException:
279 // System.Net.Sockets.Socket 已关闭。
280 //
281 // T:System.ArgumentOutOfRangeException:
282 // 为设置操作指定的值小于 -1。
283 public int ReceiveTimeout { get; set; }
284 //
285 // 摘要:
286 // 获取远程终结点。
287 //
288 // 返回结果:
289 // 当前和 System.Net.Sockets.Socket 通信的 System.Net.EndPoint。
290 //
291 // 异常:
292 // T:System.Net.Sockets.SocketException:
293 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
294 //
295 // T:System.ObjectDisposedException:
296 // System.Net.Sockets.Socket 已关闭。
297 public EndPoint RemoteEndPoint { get; }
298 //
299 // 摘要:
300 // 获取或设置一个值,该值指定 System.Net.Sockets.Socket 发送缓冲区的大小。
301 //
302 // 返回结果:
303 // System.Int32,它包含发送缓冲区的大小(以字节为单位)。默认值为 8192。
304 //
305 // 异常:
306 // T:System.Net.Sockets.SocketException:
307 // 尝试访问套接字时发生错误。
308 //
309 // T:System.ObjectDisposedException:
310 // System.Net.Sockets.Socket 已关闭。
311 //
312 // T:System.ArgumentOutOfRangeException:
313 // 为设置操作指定的值小于 0。
314 public int SendBufferSize { get; set; }
315 //
316 // 摘要:
317 // 获取或设置一个值,该值指定之后同步 Overload:System.Net.Sockets.Socket.Send 调用将超时的时间长度。
318 //
319 // 返回结果:
320 // 超时值(以毫秒为单位)。如果将该属性设置为 1 到 499 之间的值,该值将被更改为 500。默认值为 0,指示超时期限无限大。指定 -1 还会指示超时期限无限大。
321 //
322 // 异常:
323 // T:System.Net.Sockets.SocketException:
324 // 尝试访问套接字时发生错误。
325 //
326 // T:System.ObjectDisposedException:
327 // System.Net.Sockets.Socket 已关闭。
328 //
329 // T:System.ArgumentOutOfRangeException:
330 // 为设置操作指定的值小于 -1。
331 public int SendTimeout { get; set; }
332 //
333 // 摘要:
334 // 获取 System.Net.Sockets.Socket 的类型。
335 //
336 // 返回结果:
337 // System.Net.Sockets.SocketType 值之一。
338 public SocketType SocketType { get; }
339 //
340 // 摘要:
341 // 获取或设置一个值,指定 System.Net.Sockets.Socket 发送的 Internet 协议 (IP) 数据包的生存时间 (TTL) 值。
342 //
343 // 返回结果:
344 // TTL 值。
345 //
346 // 异常:
347 // T:System.ArgumentOutOfRangeException:
348 // TTL 值不能设置为负数。
349 //
350 // T:System.NotSupportedException:
351 // 只有对于在 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
352 // 族中的套接字,才可以设置此属性。
353 //
354 // T:System.Net.Sockets.SocketException:
355 // 尝试访问套接字时发生错误。在尝试将 TTL 设置为大于 255 的值时,也将返回此错误。
356 //
357 // T:System.ObjectDisposedException:
358 // System.Net.Sockets.Socket 已关闭。
359 public short Ttl { get; set; }
360 //
361 // 摘要:
362 // 指定套接字是否应仅使用重叠 I/O 模式。
363 //
364 // 返回结果:
365 // 如果 System.Net.Sockets.Socket 仅使用重叠 I/O,则为 true;否则为 false。默认值为 false。
366 //
367 // 异常:
368 // T:System.InvalidOperationException:
369 // 套接字已绑定到完成端口。
370 public bool UseOnlyOverlappedIO { get; set; }
371
372 //
373 // 摘要:
374 // 取消一个对远程主机连接的异步请求。
375 //
376 // 参数:
377 // e:
378 // System.Net.Sockets.SocketAsyncEventArgs 对象,该对象用于通过调用 System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs)
379 // 方法之一,请求与远程主机的连接。
380 //
381 // 异常:
382 // T:System.ArgumentNullException:
383 // e 参数不能为 null,并且 System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为空。
384 //
385 // T:System.Net.Sockets.SocketException:
386 // 尝试访问套接字时发生错误。
387 //
388 // T:System.ObjectDisposedException:
389 // System.Net.Sockets.Socket 已关闭。
390 //
391 // T:System.Security.SecurityException:
392 // 调用堆栈上部的调用方无权执行所请求的操作。
393 public static void CancelConnectAsync(SocketAsyncEventArgs e);
394 //
395 // 摘要:
396 // 开始一个对远程主机连接的异步请求。
397 //
398 // 参数:
399 // socketType:
400 // System.Net.Sockets.SocketType 值之一。
401 //
402 // protocolType:
403 // System.Net.Sockets.ProtocolType 值之一。
404 //
405 // e:
406 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
407 //
408 // 返回结果:
409 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
410 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
411 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
412 //
413 // 异常:
414 // T:System.ArgumentException:
415 // 参数无效。如果指定了多个缓冲区,即 System.Net.Sockets.SocketAsyncEventArgs.BufferList 属性不为 null,将会发生此异常。
416 //
417 // T:System.ArgumentNullException:
418 // e 参数不能为 null,并且 System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为空。
419 //
420 // T:System.InvalidOperationException:
421 // System.Net.Sockets.Socket 正在侦听或已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs
422 // 对象执行套接字操作。
423 //
424 // T:System.Net.Sockets.SocketException:
425 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
426 //
427 // T:System.NotSupportedException:
428 // 此方法需要 Windows XP 或更高版本。如果本地终结点和 System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint
429 // 不是相同的地址族,也会发生此异常。
430 //
431 // T:System.ObjectDisposedException:
432 // System.Net.Sockets.Socket 已关闭。
433 //
434 // T:System.Security.SecurityException:
435 // 调用堆栈上部的调用方无权执行所请求的操作。
436 public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e);
437 //
438 // 摘要:
439 // 确定一个或多个套接字的状态。
440 //
441 // 参数:
442 // checkRead:
443 // 要检查可读性的 System.Net.Sockets.Socket 实例的 System.Collections.IList。
444 //
445 // checkWrite:
446 // 一个 System.Net.Sockets.Socket 实例的 System.Collections.IList,用于检查可写性。
447 //
448 // checkError:
449 // 要检查错误的 System.Net.Sockets.Socket 实例的 System.Collections.IList。
450 //
451 // microSeconds:
452 // 超时值(以毫秒为单位)。A -1 值指示超时值为无限大。
453 //
454 // 异常:
455 // T:System.ArgumentNullException:
456 // checkRead 参数为 null 或为空。-和-checkWrite 参数为 null 或空。-和-checkError 参数为 null 或为空。
457 //
458 // T:System.Net.Sockets.SocketException:
459 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
460 public static void Select(IList checkRead, IList checkWrite, IList checkError, int microSeconds);
461 //
462 // 摘要:
463 // 为新建连接创建新的 System.Net.Sockets.Socket。
464 //
465 // 返回结果:
466 // 新建连接的 System.Net.Sockets.Socket。
467 //
468 // 异常:
469 // T:System.Net.Sockets.SocketException:
470 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
471 //
472 // T:System.ObjectDisposedException:
473 // System.Net.Sockets.Socket 已关闭。
474 //
475 // T:System.InvalidOperationException:
476 // 正在接受的套接字不会侦听连接。在调用 System.Net.Sockets.Socket.Accept 之前必须调用 System.Net.Sockets.Socket.Bind(System.Net.EndPoint)
477 // 和 System.Net.Sockets.Socket.Listen(System.Int32)。
478 public Socket Accept();
479 //
480 // 摘要:
481 // 开始一个异步操作来接受一个传入的连接尝试。
482 //
483 // 参数:
484 // e:
485 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
486 //
487 // 返回结果:
488 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
489 // 事件。如果 I/O 操作同步完成,将返回 false。将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
490 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
491 //
492 // 异常:
493 // T:System.ArgumentException:
494 // 参数无效。如果所提供的缓冲区不够大,将会发生此异常。缓冲区必须至少为 2 * (sizeof(SOCKADDR_STORAGE + 16) 字节。如果指定了多个缓冲区,即
495 // System.Net.Sockets.SocketAsyncEventArgs.BufferList 属性不为 null,也会发生此异常。
496 //
497 // T:System.ArgumentOutOfRangeException:
498 // 参数超出范围。如果 System.Net.Sockets.SocketAsyncEventArgs.Count 小于 0,将会发生此异常。
499 //
500 // T:System.InvalidOperationException:
501 // 请求了无效操作。如果接收方 System.Net.Sockets.Socket 未侦听连接或者绑定了接受的套接字,将发生此异常。System.Net.Sockets.Socket.Bind(System.Net.EndPoint)
502 // 和 System.Net.Sockets.Socket.Listen(System.Int32) 方法必须先于 System.Net.Sockets.Socket.AcceptAsync(System.Net.Sockets.SocketAsyncEventArgs)
503 // 方法调用。如果套接字已连接或使用指定的 e 参数的套接字操作已经在进行中,也会发生此异常。
504 //
505 // T:System.Net.Sockets.SocketException:
506 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
507 //
508 // T:System.NotSupportedException:
509 // 此方法需要 Windows XP 或更高版本。
510 //
511 // T:System.ObjectDisposedException:
512 // System.Net.Sockets.Socket 已关闭。
513 public bool AcceptAsync(SocketAsyncEventArgs e);
514 //
515 // 摘要:
516 // 开始一个异步操作来接受一个传入的连接尝试。
517 //
518 // 参数:
519 // callback:
520 // System.AsyncCallback 委托。
521 //
522 // state:
523 // 一个对象,它包含此请求的状态信息。
524 //
525 // 返回结果:
526 // 一个 System.IAsyncResult,它引用异步 System.Net.Sockets.Socket 创建。
527 //
528 // 异常:
529 // T:System.ObjectDisposedException:
530 // System.Net.Sockets.Socket 对象已关闭。
531 //
532 // T:System.NotSupportedException:
533 // 此方法需要 Windows NT。
534 //
535 // T:System.InvalidOperationException:
536 // 正在接受的套接字不会侦听连接。在调用 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
537 // 之前必须调用 System.Net.Sockets.Socket.Bind(System.Net.EndPoint) 和 System.Net.Sockets.Socket.Listen(System.Int32)。-
538 // 或 -已接受的套接字是绑定的。
539 //
540 // T:System.ArgumentOutOfRangeException:
541 // receiveSize 小于 0。
542 //
543 // T:System.Net.Sockets.SocketException:
544 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
545 public IAsyncResult BeginAccept(AsyncCallback callback, object state);
546 //
547 // 摘要:
548 // 开始异步操作以接受传入的连接尝试并接收客户端应用程序发送的第一个数据块。
549 //
550 // 参数:
551 // receiveSize:
552 // 要从发送方读取的字节数。
553 //
554 // callback:
555 // System.AsyncCallback 委托。
556 //
557 // state:
558 // 一个对象,它包含此请求的状态信息。
559 //
560 // 返回结果:
561 // 一个 System.IAsyncResult,它引用异步 System.Net.Sockets.Socket 创建。
562 //
563 // 异常:
564 // T:System.ObjectDisposedException:
565 // System.Net.Sockets.Socket 对象已关闭。
566 //
567 // T:System.NotSupportedException:
568 // 此方法需要 Windows NT。
569 //
570 // T:System.InvalidOperationException:
571 // 正在接受的套接字不会侦听连接。在调用 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
572 // 之前必须调用 System.Net.Sockets.Socket.Bind(System.Net.EndPoint) 和 System.Net.Sockets.Socket.Listen(System.Int32)。-
573 // 或 -已接受的套接字是绑定的。
574 //
575 // T:System.ArgumentOutOfRangeException:
576 // receiveSize 小于 0。
577 //
578 // T:System.Net.Sockets.SocketException:
579 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
580 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
581 public IAsyncResult BeginAccept(int receiveSize, AsyncCallback callback, object state);
582 //
583 // 摘要:
584 // 开始异步操作以接受从指定套接字传入的连接尝试并接收客户端应用程序发送的第一个数据块。
585 //
586 // 参数:
587 // acceptSocket:
588 // 接受的 System.Net.Sockets.Socket 对象。此值可以是 null。
589 //
590 // receiveSize:
591 // 要接收的最大字节数。
592 //
593 // callback:
594 // System.AsyncCallback 委托。
595 //
596 // state:
597 // 一个对象,它包含此请求的状态信息。
598 //
599 // 返回结果:
600 // 一个 System.IAsyncResult 对象,它引用异步 System.Net.Sockets.Socket 对象创建。
601 //
602 // 异常:
603 // T:System.ObjectDisposedException:
604 // System.Net.Sockets.Socket 对象已关闭。
605 //
606 // T:System.NotSupportedException:
607 // 此方法需要 Windows NT。
608 //
609 // T:System.InvalidOperationException:
610 // 正在接受的套接字不会侦听连接。在调用 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
611 // 之前必须调用 System.Net.Sockets.Socket.Bind(System.Net.EndPoint) 和 System.Net.Sockets.Socket.Listen(System.Int32)。-
612 // 或 -已接受的套接字是绑定的。
613 //
614 // T:System.ArgumentOutOfRangeException:
615 // receiveSize 小于 0。
616 //
617 // T:System.Net.Sockets.SocketException:
618 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
619 public IAsyncResult BeginAccept(Socket acceptSocket, int receiveSize, AsyncCallback callback, object state);
620 //
621 // 摘要:
622 // 开始一个对远程主机连接的异步请求。
623 //
624 // 参数:
625 // remoteEP:
626 // System.Net.EndPoint,它表示远程主机。
627 //
628 // callback:
629 // System.AsyncCallback 委托。
630 //
631 // state:
632 // 一个对象,它包含此请求的状态信息。
633 //
634 // 返回结果:
635 // System.IAsyncResult,它引用异步连接。
636 //
637 // 异常:
638 // T:System.ArgumentNullException:
639 // remoteEP 为 null。
640 //
641 // T:System.Net.Sockets.SocketException:
642 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
643 //
644 // T:System.ObjectDisposedException:
645 // System.Net.Sockets.Socket 已关闭。
646 //
647 // T:System.Security.SecurityException:
648 // 调用堆栈上部的调用方无权执行所请求的操作。
649 //
650 // T:System.InvalidOperationException:
651 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
652 public IAsyncResult BeginConnect(EndPoint remoteEP, AsyncCallback callback, object state);
653 //
654 // 摘要:
655 // 开始一个对远程主机连接的异步请求。主机由 System.Net.IPAddress 数组和端口号指定。
656 //
657 // 参数:
658 // addresses:
659 // 至少一个 System.Net.IPAddress,指定远程主机。
660 //
661 // port:
662 // 远程主机的端口号。
663 //
664 // requestCallback:
665 // 一个 System.AsyncCallback 委托,它引用连接操作完成时要调用的方法。
666 //
667 // state:
668 // 一个用户定义对象,其中包含连接操作的相关信息。操作完成时,此对象传递给了 requestCallback 委托。
669 //
670 // 返回结果:
671 // System.IAsyncResult,它引用异步连接。
672 //
673 // 异常:
674 // T:System.ArgumentNullException:
675 // addresses 为 null。
676 //
677 // T:System.Net.Sockets.SocketException:
678 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
679 //
680 // T:System.ObjectDisposedException:
681 // System.Net.Sockets.Socket 已关闭。
682 //
683 // T:System.NotSupportedException:
684 // 此方法对 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
685 // 的套接字有效。
686 //
687 // T:System.ArgumentOutOfRangeException:
688 // 此端口号无效。
689 //
690 // T:System.ArgumentException:
691 // address 的长度为零。
692 //
693 // T:System.InvalidOperationException:
694 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
695 public IAsyncResult BeginConnect(IPAddress[] addresses, int port, AsyncCallback requestCallback, object state);
696 //
697 // 摘要:
698 // 开始一个对远程主机连接的异步请求。主机由 System.Net.IPAddress 和端口号指定。
699 //
700 // 参数:
701 // address:
702 // 远程主机的 System.Net.IPAddress。
703 //
704 // port:
705 // 远程主机的端口号。
706 //
707 // requestCallback:
708 // 一个 System.AsyncCallback 委托,它引用连接操作完成时要调用的方法。
709 //
710 // state:
711 // 一个用户定义对象,其中包含连接操作的相关信息。操作完成时,此对象传递给了 requestCallback 委托。
712 //
713 // 返回结果:
714 // System.IAsyncResult,它引用异步连接。
715 //
716 // 异常:
717 // T:System.ArgumentNullException:
718 // address 为 null。
719 //
720 // T:System.Net.Sockets.SocketException:
721 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
722 //
723 // T:System.ObjectDisposedException:
724 // System.Net.Sockets.Socket 已关闭。
725 //
726 // T:System.NotSupportedException:
727 // System.Net.Sockets.Socket 不在套接字族中。
728 //
729 // T:System.ArgumentOutOfRangeException:
730 // 此端口号无效。
731 //
732 // T:System.ArgumentException:
733 // address 的长度为零。
734 //
735 // T:System.InvalidOperationException:
736 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
737 public IAsyncResult BeginConnect(IPAddress address, int port, AsyncCallback requestCallback, object state);
738 //
739 // 摘要:
740 // 开始一个对远程主机连接的异步请求。主机由主机名和端口号指定。
741 //
742 // 参数:
743 // host:
744 // 远程主机的名称。
745 //
746 // port:
747 // 远程主机的端口号。
748 //
749 // requestCallback:
750 // 一个 System.AsyncCallback 委托,它引用连接操作完成时要调用的方法。
751 //
752 // state:
753 // 一个用户定义对象,其中包含连接操作的相关信息。操作完成时,此对象传递给了 requestCallback 委托。
754 //
755 // 返回结果:
756 // System.IAsyncResult,它引用异步连接。
757 //
758 // 异常:
759 // T:System.ArgumentNullException:
760 // host 为 null。
761 //
762 // T:System.ObjectDisposedException:
763 // System.Net.Sockets.Socket 已关闭。
764 //
765 // T:System.NotSupportedException:
766 // 此方法对 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
767 // 系列中的套接字有效。
768 //
769 // T:System.ArgumentOutOfRangeException:
770 // 此端口号无效。
771 //
772 // T:System.InvalidOperationException:
773 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
774 public IAsyncResult BeginConnect(string host, int port, AsyncCallback requestCallback, object state);
775 //
776 // 摘要:
777 // 开始异步请求从远程终结点断开连接。
778 //
779 // 参数:
780 // reuseSocket:
781 // 如果关闭该连接后可以重用此套接字,则为 true;否则为 false。
782 //
783 // callback:
784 // System.AsyncCallback 委托。
785 //
786 // state:
787 // 一个对象,它包含此请求的状态信息。
788 //
789 // 返回结果:
790 // 一个 System.IAsyncResult 对象,它引用异步操作。
791 //
792 // 异常:
793 // T:System.NotSupportedException:
794 // 操作系统为 Windows 2000 或更低版本,而此方法需要在 Windows XP 中使用。
795 //
796 // T:System.ObjectDisposedException:
797 // System.Net.Sockets.Socket 对象已关闭。
798 //
799 // T:System.Net.Sockets.SocketException:
800 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
801 public IAsyncResult BeginDisconnect(bool reuseSocket, AsyncCallback callback, object state);
802 //
803 // 摘要:
804 // 开始从连接的 System.Net.Sockets.Socket 中异步接收数据。
805 //
806 // 参数:
807 // buffers:
808 // System.Byte 类型的数组,它是存储接收到的数据的位置。
809 //
810 // socketFlags:
811 // System.Net.Sockets.SocketFlags 值的按位组合。
812 //
813 // callback:
814 // 一个 System.AsyncCallback 委托,它引用操作完成时要调用的方法。
815 //
816 // state:
817 // 一个用户定义对象,其中包含接收操作的相关信息。操作完成时,此对象传递给了 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)
818 // 委托。
819 //
820 // 返回结果:
821 // 一个引用异步读取的 System.IAsyncResult。
822 //
823 // 异常:
824 // T:System.ArgumentNullException:
825 // buffer 为 null。
826 //
827 // T:System.Net.Sockets.SocketException:
828 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
829 //
830 // T:System.ObjectDisposedException:
831 // System.Net.Sockets.Socket 已关闭。
832 public IAsyncResult BeginReceive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, AsyncCallback callback, object state);
833 //
834 // 摘要:
835 // 开始从连接的 System.Net.Sockets.Socket 中异步接收数据。
836 //
837 // 参数:
838 // buffers:
839 // System.Byte 类型的数组,它是存储接收到的数据的位置。
840 //
841 // socketFlags:
842 // System.Net.Sockets.SocketFlags 值的按位组合。
843 //
844 // errorCode:
845 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
846 //
847 // callback:
848 // 一个 System.AsyncCallback 委托,它引用操作完成时要调用的方法。
849 //
850 // state:
851 // 一个用户定义对象,其中包含接收操作的相关信息。操作完成时,此对象传递给了 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)
852 // 委托。
853 //
854 // 返回结果:
855 // 一个引用异步读取的 System.IAsyncResult。
856 //
857 // 异常:
858 // T:System.ArgumentNullException:
859 // buffer 为 null。
860 //
861 // T:System.Net.Sockets.SocketException:
862 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
863 //
864 // T:System.ObjectDisposedException:
865 // System.Net.Sockets.Socket 已关闭。
866 public IAsyncResult BeginReceive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state);
867 //
868 // 摘要:
869 // 开始从连接的 System.Net.Sockets.Socket 中异步接收数据。
870 //
871 // 参数:
872 // buffer:
873 // System.Byte 类型的数组,它是存储接收到的数据的位置。
874 //
875 // offset:
876 // buffer 参数中存储所接收数据的位置,该位置从零开始计数。
877 //
878 // size:
879 // 要接收的字节数。
880 //
881 // socketFlags:
882 // System.Net.Sockets.SocketFlags 值的按位组合。
883 //
884 // callback:
885 // 一个 System.AsyncCallback 委托,它引用操作完成时要调用的方法。
886 //
887 // state:
888 // 一个用户定义对象,其中包含接收操作的相关信息。操作完成时,此对象传递给了 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)
889 // 委托。
890 //
891 // 返回结果:
892 // 一个引用异步读取的 System.IAsyncResult。
893 //
894 // 异常:
895 // T:System.ArgumentNullException:
896 // buffer 为 null。
897 //
898 // T:System.Net.Sockets.SocketException:
899 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
900 //
901 // T:System.ObjectDisposedException:
902 // System.Net.Sockets.Socket 已关闭。
903 //
904 // T:System.ArgumentOutOfRangeException:
905 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
906 // offset 参数的值。
907 public IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback, object state);
908 //
909 // 摘要:
910 // 开始从连接的 System.Net.Sockets.Socket 中异步接收数据。
911 //
912 // 参数:
913 // buffer:
914 // System.Byte 类型的数组,它是存储接收到的数据的位置。
915 //
916 // offset:
917 // buffer 中存储所接收数据的位置。
918 //
919 // size:
920 // 要接收的字节数。
921 //
922 // socketFlags:
923 // System.Net.Sockets.SocketFlags 值的按位组合。
924 //
925 // errorCode:
926 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
927 //
928 // callback:
929 // 一个 System.AsyncCallback 委托,它引用操作完成时要调用的方法。
930 //
931 // state:
932 // 一个用户定义对象,其中包含接收操作的相关信息。操作完成时,此对象传递给了 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)
933 // 委托。
934 //
935 // 返回结果:
936 // 一个引用异步读取的 System.IAsyncResult。
937 //
938 // 异常:
939 // T:System.ArgumentNullException:
940 // buffer 为 null。
941 //
942 // T:System.Net.Sockets.SocketException:
943 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
944 //
945 // T:System.ObjectDisposedException:
946 // System.Net.Sockets.Socket 已关闭。
947 //
948 // T:System.ArgumentOutOfRangeException:
949 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
950 // offset 参数的值。
951 public IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state);
952 //
953 // 摘要:
954 // 开始从指定网络设备中异步接收数据。
955 //
956 // 参数:
957 // buffer:
958 // System.Byte 类型的数组,它是存储接收到的数据的位置。
959 //
960 // offset:
961 // buffer 参数中存储数据的位置,该位置从零开始计数。
962 //
963 // size:
964 // 要接收的字节数。
965 //
966 // socketFlags:
967 // System.Net.Sockets.SocketFlags 值的按位组合。
968 //
969 // remoteEP:
970 // 一个 System.Net.EndPoint,它表示数据的来源。
971 //
972 // callback:
973 // System.AsyncCallback 委托。
974 //
975 // state:
976 // 一个对象,它包含此请求的状态信息。
977 //
978 // 返回结果:
979 // 一个引用异步读取的 System.IAsyncResult。
980 //
981 // 异常:
982 // T:System.ArgumentNullException:
983 // buffer 为 null。- 或 -remoteEP 为 null。
984 //
985 // T:System.Net.Sockets.SocketException:
986 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
987 //
988 // T:System.ArgumentOutOfRangeException:
989 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
990 // offset 参数的值。
991 //
992 // T:System.ObjectDisposedException:
993 // System.Net.Sockets.Socket 已关闭。
994 //
995 // T:System.Security.SecurityException:
996 // 调用堆栈上部的调用方无权执行所请求的操作。
997 public IAsyncResult BeginReceiveFrom(byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP, AsyncCallback callback, object state);
998 //
999 // 摘要:
1000 // 开始使用指定的 System.Net.Sockets.SocketFlags 将指定字节数的数据异步接收到数据缓冲区的指定位置,然后存储终结点和数据包信息。
1001 //
1002 // 参数:
1003 // buffer:
1004 // System.Byte 类型的数组,它是存储接收到的数据的位置。
1005 //
1006 // offset:
1007 // buffer 参数中存储数据的位置,该位置从零开始计数。
1008 //
1009 // size:
1010 // 要接收的字节数。
1011 //
1012 // socketFlags:
1013 // System.Net.Sockets.SocketFlags 值的按位组合。
1014 //
1015 // remoteEP:
1016 // 一个 System.Net.EndPoint,它表示数据的来源。
1017 //
1018 // callback:
1019 // System.AsyncCallback 委托。
1020 //
1021 // state:
1022 // 一个对象,它包含此请求的状态信息。
1023 //
1024 // 返回结果:
1025 // 一个引用异步读取的 System.IAsyncResult。
1026 //
1027 // 异常:
1028 // T:System.ArgumentNullException:
1029 // buffer 为 null。- 或 -remoteEP 为 null。
1030 //
1031 // T:System.Net.Sockets.SocketException:
1032 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1033 //
1034 // T:System.ArgumentOutOfRangeException:
1035 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
1036 // offset 参数的值。
1037 //
1038 // T:System.ObjectDisposedException:
1039 // System.Net.Sockets.Socket 已关闭。
1040 //
1041 // T:System.NotSupportedException:
1042 // 操作系统为 Windows 2000 或更低版本,而此方法需要在 Windows XP 中使用。
1043 public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP, AsyncCallback callback, object state);
1044 //
1045 // 摘要:
1046 // 将数据异步发送到连接的 System.Net.Sockets.Socket。
1047 //
1048 // 参数:
1049 // buffers:
1050 // System.Byte 类型的数组,它包含要发送的数据。
1051 //
1052 // socketFlags:
1053 // System.Net.Sockets.SocketFlags 值的按位组合。
1054 //
1055 // callback:
1056 // System.AsyncCallback 委托。
1057 //
1058 // state:
1059 // 一个对象,它包含此请求的状态信息。
1060 //
1061 // 返回结果:
1062 // 引用异步发送的 System.IAsyncResult。
1063 //
1064 // 异常:
1065 // T:System.ArgumentNullException:
1066 // buffers 为 null。
1067 //
1068 // T:System.ArgumentException:
1069 // buffers 为空。
1070 //
1071 // T:System.Net.Sockets.SocketException:
1072 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1073 //
1074 // T:System.ObjectDisposedException:
1075 // System.Net.Sockets.Socket 已关闭。
1076 public IAsyncResult BeginSend(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, AsyncCallback callback, object state);
1077 //
1078 // 摘要:
1079 // 将数据异步发送到连接的 System.Net.Sockets.Socket。
1080 //
1081 // 参数:
1082 // buffers:
1083 // System.Byte 类型的数组,它包含要发送的数据。
1084 //
1085 // socketFlags:
1086 // System.Net.Sockets.SocketFlags 值的按位组合。
1087 //
1088 // errorCode:
1089 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
1090 //
1091 // callback:
1092 // System.AsyncCallback 委托。
1093 //
1094 // state:
1095 // 一个对象,它包含此请求的状态信息。
1096 //
1097 // 返回结果:
1098 // 引用异步发送的 System.IAsyncResult。
1099 //
1100 // 异常:
1101 // T:System.ArgumentNullException:
1102 // buffers 为 null。
1103 //
1104 // T:System.ArgumentException:
1105 // buffers 为空。
1106 //
1107 // T:System.Net.Sockets.SocketException:
1108 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1109 //
1110 // T:System.ObjectDisposedException:
1111 // System.Net.Sockets.Socket 已关闭。
1112 public IAsyncResult BeginSend(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state);
1113 //
1114 // 摘要:
1115 // 将数据异步发送到连接的 System.Net.Sockets.Socket。
1116 //
1117 // 参数:
1118 // buffer:
1119 // System.Byte 类型的数组,它包含要发送的数据。
1120 //
1121 // offset:
1122 // buffer 参数中开始发送数据的位置,该位置从零开始计数。
1123 //
1124 // size:
1125 // 要发送的字节数。
1126 //
1127 // socketFlags:
1128 // System.Net.Sockets.SocketFlags 值的按位组合。
1129 //
1130 // callback:
1131 // System.AsyncCallback 委托。
1132 //
1133 // state:
1134 // 一个对象,它包含此请求的状态信息。
1135 //
1136 // 返回结果:
1137 // 引用异步发送的 System.IAsyncResult。
1138 //
1139 // 异常:
1140 // T:System.ArgumentNullException:
1141 // buffer 为 null。
1142 //
1143 // T:System.Net.Sockets.SocketException:
1144 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1145 //
1146 // T:System.ArgumentOutOfRangeException:
1147 // offset 小于 0。- 或 -offset 小于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
1148 // offset 参数的值。
1149 //
1150 // T:System.ObjectDisposedException:
1151 // System.Net.Sockets.Socket 已关闭。
1152 public IAsyncResult BeginSend(byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback, object state);
1153 //
1154 // 摘要:
1155 // 将数据异步发送到连接的 System.Net.Sockets.Socket。
1156 //
1157 // 参数:
1158 // buffer:
1159 // System.Byte 类型的数组,它包含要发送的数据。
1160 //
1161 // offset:
1162 // buffer 参数中开始发送数据的位置,该位置从零开始计数。
1163 //
1164 // size:
1165 // 要发送的字节数。
1166 //
1167 // socketFlags:
1168 // System.Net.Sockets.SocketFlags 值的按位组合。
1169 //
1170 // errorCode:
1171 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
1172 //
1173 // callback:
1174 // System.AsyncCallback 委托。
1175 //
1176 // state:
1177 // 一个对象,它包含此请求的状态信息。
1178 //
1179 // 返回结果:
1180 // 引用异步发送的 System.IAsyncResult。
1181 //
1182 // 异常:
1183 // T:System.ArgumentNullException:
1184 // buffer 为 null。
1185 //
1186 // T:System.Net.Sockets.SocketException:
1187 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1188 //
1189 // T:System.ArgumentOutOfRangeException:
1190 // offset 小于 0。- 或 -offset 小于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
1191 // offset 参数的值。
1192 //
1193 // T:System.ObjectDisposedException:
1194 // System.Net.Sockets.Socket 已关闭。
1195 public IAsyncResult BeginSend(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state);
1196 //
1197 // 摘要:
1198 // 使用 System.Net.Sockets.TransmitFileOptions.UseDefaultWorkerThread 标志,将文件 fileName
1199 // 发送到连接的 System.Net.Sockets.Socket 对象。
1200 //
1201 // 参数:
1202 // fileName:
1203 // 一个字符串,它包含要发送的文件的路径和名称。此参数可以为 null。
1204 //
1205 // callback:
1206 // System.AsyncCallback 委托。
1207 //
1208 // state:
1209 // 一个对象,它包含此请求的状态信息。
1210 //
1211 // 返回结果:
1212 // 一个 System.IAsyncResult 对象,它表示异步发送。
1213 //
1214 // 异常:
1215 // T:System.ObjectDisposedException:
1216 // System.Net.Sockets.Socket 对象已关闭。
1217 //
1218 // T:System.NotSupportedException:
1219 // 套接字未连接到远程主机。
1220 //
1221 // T:System.IO.FileNotFoundException:
1222 // 未找到文件 fileName。
1223 //
1224 // T:System.Net.Sockets.SocketException:
1225 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1226 public IAsyncResult BeginSendFile(string fileName, AsyncCallback callback, object state);
1227 //
1228 // 摘要:
1229 // 将文件和数据缓冲区异步发送到连接的 System.Net.Sockets.Socket 对象。
1230 //
1231 // 参数:
1232 // fileName:
1233 // 一个字符串,它包含要发送的文件的路径和名称。此参数可以为 null。
1234 //
1235 // preBuffer:
1236 // 一个 System.Byte 数组,包含发送文件前要发送的数据。此参数可以为 null。
1237 //
1238 // postBuffer:
1239 // 一个 System.Byte 数组,包含发送文件后要发送的数据。此参数可以为 null。
1240 //
1241 // flags:
1242 // System.Net.Sockets.TransmitFileOptions 值的按位组合。
1243 //
1244 // callback:
1245 // 一个 System.AsyncCallback 委托,将在此操作完成时调用它。此参数可以为 null。
1246 //
1247 // state:
1248 // 一个用户定义的对象,它包含此请求的状态信息。此参数可以为 null。
1249 //
1250 // 返回结果:
1251 // 一个 System.IAsyncResult 对象,它表示异步操作。
1252 //
1253 // 异常:
1254 // T:System.ObjectDisposedException:
1255 // System.Net.Sockets.Socket 对象已关闭。
1256 //
1257 // T:System.Net.Sockets.SocketException:
1258 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1259 //
1260 // T:System.NotSupportedException:
1261 // 操作系统不是 Windows NT 或更高版本。- 或 -套接字未连接到远程主机。
1262 //
1263 // T:System.IO.FileNotFoundException:
1264 // 未找到文件 fileName。
1265 public IAsyncResult BeginSendFile(string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags, AsyncCallback callback, object state);
1266 //
1267 // 摘要:
1268 // 向特定远程主机异步发送数据。
1269 //
1270 // 参数:
1271 // buffer:
1272 // System.Byte 类型的数组,它包含要发送的数据。
1273 //
1274 // offset:
1275 // buffer 中的从其开始发送数据的、从零开始编排的位置。
1276 //
1277 // size:
1278 // 要发送的字节数。
1279 //
1280 // socketFlags:
1281 // System.Net.Sockets.SocketFlags 值的按位组合。
1282 //
1283 // remoteEP:
1284 // System.Net.EndPoint,表示远程设备。
1285 //
1286 // callback:
1287 // System.AsyncCallback 委托。
1288 //
1289 // state:
1290 // 一个对象,它包含此请求的状态信息。
1291 //
1292 // 返回结果:
1293 // 引用异步发送的 System.IAsyncResult。
1294 //
1295 // 异常:
1296 // T:System.ArgumentNullException:
1297 // buffer 为 null。- 或 -remoteEP 为 null。
1298 //
1299 // T:System.Net.Sockets.SocketException:
1300 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1301 //
1302 // T:System.ArgumentOutOfRangeException:
1303 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
1304 // offset 参数的值。
1305 //
1306 // T:System.ObjectDisposedException:
1307 // System.Net.Sockets.Socket 已关闭。
1308 //
1309 // T:System.Security.SecurityException:
1310 // 调用堆栈上部的调用方无权执行所请求的操作。
1311 public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, SocketFlags socketFlags, EndPoint remoteEP, AsyncCallback callback, object state);
1312 //
1313 // 摘要:
1314 // 使 System.Net.Sockets.Socket 与一个本地终结点相关联。
1315 //
1316 // 参数:
1317 // localEP:
1318 // 要与 System.Net.Sockets.Socket 关联的本地 System.Net.EndPoint。
1319 //
1320 // 异常:
1321 // T:System.ArgumentNullException:
1322 // localEP 为 null。
1323 //
1324 // T:System.Net.Sockets.SocketException:
1325 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1326 //
1327 // T:System.ObjectDisposedException:
1328 // System.Net.Sockets.Socket 已关闭。
1329 //
1330 // T:System.Security.SecurityException:
1331 // 调用堆栈上部的调用方无权执行所请求的操作。
1332 public void Bind(EndPoint localEP);
1333 //
1334 // 摘要:
1335 // 关闭 System.Net.Sockets.Socket 连接并释放所有关联的资源。
1336 public void Close();
1337 //
1338 // 摘要:
1339 // 关闭 System.Net.Sockets.Socket 连接并释放所有关联的资源。
1340 //
1341 // 参数:
1342 // timeout:
1343 // 等待 timeout 秒以发送所有剩余数据,然后关闭该套接字。
1344 public void Close(int timeout);
1345 //
1346 // 摘要:
1347 // 建立与远程主机的连接。
1348 //
1349 // 参数:
1350 // remoteEP:
1351 // System.Net.EndPoint,表示远程设备。
1352 //
1353 // 异常:
1354 // T:System.ArgumentNullException:
1355 // remoteEP 为 null。
1356 //
1357 // T:System.Net.Sockets.SocketException:
1358 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1359 //
1360 // T:System.ObjectDisposedException:
1361 // System.Net.Sockets.Socket 已关闭。
1362 //
1363 // T:System.Security.SecurityException:
1364 // 调用堆栈上部的调用方无权执行所请求的操作。
1365 //
1366 // T:System.InvalidOperationException:
1367 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
1368 public void Connect(EndPoint remoteEP);
1369 //
1370 // 摘要:
1371 // 建立与远程主机的连接。主机由 IP 地址的数组和端口号指定。
1372 //
1373 // 参数:
1374 // addresses:
1375 // 远程主机的 IP 地址。
1376 //
1377 // port:
1378 // 远程主机的端口号。
1379 //
1380 // 异常:
1381 // T:System.ArgumentNullException:
1382 // addresses 为 null。
1383 //
1384 // T:System.ArgumentOutOfRangeException:
1385 // 此端口号无效。
1386 //
1387 // T:System.Net.Sockets.SocketException:
1388 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1389 //
1390 // T:System.ObjectDisposedException:
1391 // System.Net.Sockets.Socket 已关闭。
1392 //
1393 // T:System.NotSupportedException:
1394 // 此方法对 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
1395 // 系列中的套接字有效。
1396 //
1397 // T:System.ArgumentException:
1398 // address 的长度为零。
1399 //
1400 // T:System.InvalidOperationException:
1401 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
1402 public void Connect(IPAddress[] addresses, int port);
1403 //
1404 // 摘要:
1405 // 建立与远程主机的连接。主机由 IP 地址和端口号指定。
1406 //
1407 // 参数:
1408 // address:
1409 // 远程主机的 IP 地址。
1410 //
1411 // port:
1412 // 远程主机的端口号。
1413 //
1414 // 异常:
1415 // T:System.ArgumentNullException:
1416 // address 为 null。
1417 //
1418 // T:System.ArgumentOutOfRangeException:
1419 // 此端口号无效。
1420 //
1421 // T:System.Net.Sockets.SocketException:
1422 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1423 //
1424 // T:System.ObjectDisposedException:
1425 // System.Net.Sockets.Socket 已关闭。
1426 //
1427 // T:System.NotSupportedException:
1428 // 此方法对 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
1429 // 系列中的套接字有效。
1430 //
1431 // T:System.ArgumentException:
1432 // address 的长度为零。
1433 //
1434 // T:System.InvalidOperationException:
1435 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
1436 public void Connect(IPAddress address, int port);
1437 //
1438 // 摘要:
1439 // 建立与远程主机的连接。主机由主机名和端口号指定。
1440 //
1441 // 参数:
1442 // host:
1443 // 远程主机的名称。
1444 //
1445 // port:
1446 // 远程主机的端口号。
1447 //
1448 // 异常:
1449 // T:System.ArgumentNullException:
1450 // host 为 null。
1451 //
1452 // T:System.ArgumentOutOfRangeException:
1453 // 此端口号无效。
1454 //
1455 // T:System.Net.Sockets.SocketException:
1456 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1457 //
1458 // T:System.ObjectDisposedException:
1459 // System.Net.Sockets.Socket 已关闭。
1460 //
1461 // T:System.NotSupportedException:
1462 // 此方法对 System.Net.Sockets.AddressFamily.InterNetwork 或 System.Net.Sockets.AddressFamily.InterNetworkV6
1463 // 系列中的套接字有效。
1464 //
1465 // T:System.InvalidOperationException:
1466 // System.Net.Sockets.Socket 为 System.Net.Sockets.Socket.Listen(System.Int32)。
1467 public void Connect(string host, int port);
1468 //
1469 // 摘要:
1470 // 开始一个对远程主机连接的异步请求。
1471 //
1472 // 参数:
1473 // e:
1474 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
1475 //
1476 // 返回结果:
1477 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
1478 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
1479 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
1480 //
1481 // 异常:
1482 // T:System.ArgumentException:
1483 // 参数无效。如果指定了多个缓冲区,即 System.Net.Sockets.SocketAsyncEventArgs.BufferList 属性不为 null,将会发生此异常。
1484 //
1485 // T:System.ArgumentNullException:
1486 // e 参数不能为 null,并且 System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为空。
1487 //
1488 // T:System.InvalidOperationException:
1489 // System.Net.Sockets.Socket 正在侦听或已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs
1490 // 对象执行套接字操作。
1491 //
1492 // T:System.Net.Sockets.SocketException:
1493 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1494 //
1495 // T:System.NotSupportedException:
1496 // 此方法需要 Windows XP 或更高版本。如果本地终结点和 System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint
1497 // 不是相同的地址族,也会发生此异常。
1498 //
1499 // T:System.ObjectDisposedException:
1500 // System.Net.Sockets.Socket 已关闭。
1501 //
1502 // T:System.Security.SecurityException:
1503 // 调用堆栈上部的调用方无权执行所请求的操作。
1504 public bool ConnectAsync(SocketAsyncEventArgs e);
1505 //
1506 // 摘要:
1507 // 关闭套接字连接并允许重用套接字。
1508 //
1509 // 参数:
1510 // reuseSocket:
1511 // 如果关闭当前连接后可以重用此套接字,则为 true;否则为 false。
1512 //
1513 // 异常:
1514 // T:System.PlatformNotSupportedException:
1515 // 此方法需要 Windows 2000 或更低版本,否则将引发异常。
1516 //
1517 // T:System.ObjectDisposedException:
1518 // System.Net.Sockets.Socket 对象已关闭。
1519 //
1520 // T:System.Net.Sockets.SocketException:
1521 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1522 public void Disconnect(bool reuseSocket);
1523 //
1524 // 摘要:
1525 // 开始异步请求从远程终结点断开连接。
1526 //
1527 // 参数:
1528 // e:
1529 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
1530 //
1531 // 返回结果:
1532 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
1533 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
1534 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
1535 //
1536 // 异常:
1537 // T:System.ArgumentNullException:
1538 // e 参数不能为 null。
1539 //
1540 // T:System.InvalidOperationException:
1541 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
1542 //
1543 // T:System.NotSupportedException:
1544 // 此方法需要 Windows XP 或更高版本。
1545 //
1546 // T:System.ObjectDisposedException:
1547 // System.Net.Sockets.Socket 已关闭。
1548 //
1549 // T:System.Net.Sockets.SocketException:
1550 // 尝试访问套接字时发生错误。
1551 public bool DisconnectAsync(SocketAsyncEventArgs e);
1552 //
1553 // 摘要:
1554 // 释放由 System.Net.Sockets.Socket 类的当前实例占用的所有资源。
1555 public void Dispose();
1556 //
1557 // 摘要:
1558 // 重复目标进程的套接字引用,并关闭此进程的套接字。
1559 //
1560 // 参数:
1561 // targetProcessId:
1562 // 从中创建重复套接字引用的目标进程的 ID。
1563 //
1564 // 返回结果:
1565 // 要传递到目标进程的套接字引用。
1566 //
1567 // 异常:
1568 // T:System.Net.Sockets.SocketException:
1569 // targetProcessID 不是有效的进程 ID。- 或 -套接字引用的复制失败。
1570 public SocketInformation DuplicateAndClose(int targetProcessId);
1571 //
1572 // 摘要:
1573 // 异步接受传入的连接尝试,并创建新的 System.Net.Sockets.Socket 来处理远程主机通信。
1574 //
1575 // 参数:
1576 // asyncResult:
1577 // System.IAsyncResult,它存储此异步操作的状态信息以及任何用户定义数据。
1578 //
1579 // 返回结果:
1580 // 一个 System.Net.Sockets.Socket,它处理与远程主机的通信。
1581 //
1582 // 异常:
1583 // T:System.ArgumentNullException:
1584 // asyncResult 为 null。
1585 //
1586 // T:System.ArgumentException:
1587 // asyncResult 并不是通过对 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
1588 // 的调用创建的。
1589 //
1590 // T:System.Net.Sockets.SocketException:
1591 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1592 //
1593 // T:System.ObjectDisposedException:
1594 // System.Net.Sockets.Socket 已关闭。
1595 //
1596 // T:System.InvalidOperationException:
1597 // System.Net.Sockets.Socket.EndAccept(System.IAsyncResult) 方法以前被调用过。
1598 //
1599 // T:System.NotSupportedException:
1600 // 此方法需要 Windows NT。
1601 public Socket EndAccept(IAsyncResult asyncResult);
1602 //
1603 // 摘要:
1604 // 异步接受传入的连接尝试,并创建新的 System.Net.Sockets.Socket 对象来处理远程主机通信。此方法返回包含所传输的初始数据的缓冲区。
1605 //
1606 // 参数:
1607 // buffer:
1608 // 包含所传输字节的类型 System.Byte 的数组。
1609 //
1610 // asyncResult:
1611 // System.IAsyncResult 对象,它存储此异步操作的状态信息以及任何用户定义数据。
1612 //
1613 // 返回结果:
1614 // 一个 System.Net.Sockets.Socket 对象,它处理与远程主机的通信。
1615 //
1616 // 异常:
1617 // T:System.NotSupportedException:
1618 // 此方法需要 Windows NT。
1619 //
1620 // T:System.ObjectDisposedException:
1621 // System.Net.Sockets.Socket 对象已关闭。
1622 //
1623 // T:System.ArgumentNullException:
1624 // asyncResult 为空。
1625 //
1626 // T:System.ArgumentException:
1627 // asyncResult 并不是通过对 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
1628 // 的调用创建的。
1629 //
1630 // T:System.InvalidOperationException:
1631 // System.Net.Sockets.Socket.EndAccept(System.IAsyncResult) 方法以前被调用过。
1632 //
1633 // T:System.Net.Sockets.SocketException:
1634 // 尝试访问 System.Net.Sockets.Socket 时发生错误。有关更多信息,请参见备注部分。
1635 public Socket EndAccept(out byte[] buffer, IAsyncResult asyncResult);
1636 //
1637 // 摘要:
1638 // 异步接受传入的连接尝试,并创建新的 System.Net.Sockets.Socket 对象来处理远程主机通信。此方法返回一个缓冲区,其中包含初始数据和传输的字节数。
1639 //
1640 // 参数:
1641 // buffer:
1642 // 包含所传输字节的类型 System.Byte 的数组。
1643 //
1644 // bytesTransferred:
1645 // 已传输的字节数。
1646 //
1647 // asyncResult:
1648 // System.IAsyncResult 对象,它存储此异步操作的状态信息以及任何用户定义数据。
1649 //
1650 // 返回结果:
1651 // 一个 System.Net.Sockets.Socket 对象,它处理与远程主机的通信。
1652 //
1653 // 异常:
1654 // T:System.NotSupportedException:
1655 // 此方法需要 Windows NT。
1656 //
1657 // T:System.ObjectDisposedException:
1658 // System.Net.Sockets.Socket 对象已关闭。
1659 //
1660 // T:System.ArgumentNullException:
1661 // asyncResult 为空。
1662 //
1663 // T:System.ArgumentException:
1664 // asyncResult 并不是通过对 System.Net.Sockets.Socket.BeginAccept(System.AsyncCallback,System.Object)
1665 // 的调用创建的。
1666 //
1667 // T:System.InvalidOperationException:
1668 // System.Net.Sockets.Socket.EndAccept(System.IAsyncResult) 方法以前被调用过。
1669 //
1670 // T:System.Net.Sockets.SocketException:
1671 // 尝试访问 System.Net.Sockets.Socket 时发生错误。有关更多信息,请参见备注部分。
1672 public Socket EndAccept(out byte[] buffer, out int bytesTransferred, IAsyncResult asyncResult);
1673 //
1674 // 摘要:
1675 // 结束挂起的异步连接请求。
1676 //
1677 // 参数:
1678 // asyncResult:
1679 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1680 //
1681 // 异常:
1682 // T:System.ArgumentNullException:
1683 // asyncResult 为 null。
1684 //
1685 // T:System.ArgumentException:
1686 // System.Net.Sockets.Socket.BeginConnect(System.Net.EndPoint,System.AsyncCallback,System.Object)
1687 // 方法调用未返回 asyncResult。
1688 //
1689 // T:System.InvalidOperationException:
1690 // 先前曾为异步连接调用过 System.Net.Sockets.Socket.EndConnect(System.IAsyncResult)。
1691 //
1692 // T:System.Net.Sockets.SocketException:
1693 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1694 //
1695 // T:System.ObjectDisposedException:
1696 // System.Net.Sockets.Socket 已关闭。
1697 public void EndConnect(IAsyncResult asyncResult);
1698 //
1699 // 摘要:
1700 // 结束挂起的异步断开连接请求。
1701 //
1702 // 参数:
1703 // asyncResult:
1704 // System.IAsyncResult 对象,它存储此异步操作的状态信息以及所有用户定义数据。
1705 //
1706 // 异常:
1707 // T:System.NotSupportedException:
1708 // 操作系统为 Windows 2000 或更低版本,而此方法需要在 Windows XP 中使用。
1709 //
1710 // T:System.ObjectDisposedException:
1711 // System.Net.Sockets.Socket 对象已关闭。
1712 //
1713 // T:System.ArgumentNullException:
1714 // asyncResult 为 null。
1715 //
1716 // T:System.ArgumentException:
1717 // System.Net.Sockets.Socket.BeginDisconnect(System.Boolean,System.AsyncCallback,System.Object)
1718 // 方法调用未返回 asyncResult。
1719 //
1720 // T:System.InvalidOperationException:
1721 // 先前曾为异步连接调用过 System.Net.Sockets.Socket.EndDisconnect(System.IAsyncResult)。
1722 //
1723 // T:System.Net.Sockets.SocketException:
1724 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1725 //
1726 // T:System.Net.WebException:
1727 // 断开连接请求已超时。
1728 public void EndDisconnect(IAsyncResult asyncResult);
1729 //
1730 // 摘要:
1731 // 结束挂起的异步读取。
1732 //
1733 // 参数:
1734 // asyncResult:
1735 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1736 //
1737 // 返回结果:
1738 // 接收到的字节数。
1739 //
1740 // 异常:
1741 // T:System.ArgumentNullException:
1742 // asyncResult 为 null。
1743 //
1744 // T:System.ArgumentException:
1745 // System.Net.Sockets.Socket.BeginReceive(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object)
1746 // 方法调用未返回 asyncResult。
1747 //
1748 // T:System.InvalidOperationException:
1749 // 先前曾为异步读取调用过 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)。
1750 //
1751 // T:System.Net.Sockets.SocketException:
1752 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1753 //
1754 // T:System.ObjectDisposedException:
1755 // System.Net.Sockets.Socket 已关闭。
1756 public int EndReceive(IAsyncResult asyncResult);
1757 //
1758 // 摘要:
1759 // 结束挂起的异步读取。
1760 //
1761 // 参数:
1762 // asyncResult:
1763 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1764 //
1765 // errorCode:
1766 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
1767 //
1768 // 返回结果:
1769 // 接收到的字节数。
1770 //
1771 // 异常:
1772 // T:System.ArgumentNullException:
1773 // asyncResult 为 null。
1774 //
1775 // T:System.ArgumentException:
1776 // System.Net.Sockets.Socket.BeginReceive(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object)
1777 // 方法调用未返回 asyncResult。
1778 //
1779 // T:System.InvalidOperationException:
1780 // 先前曾为异步读取调用过 System.Net.Sockets.Socket.EndReceive(System.IAsyncResult)。
1781 //
1782 // T:System.Net.Sockets.SocketException:
1783 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1784 //
1785 // T:System.ObjectDisposedException:
1786 // System.Net.Sockets.Socket 已关闭。
1787 public int EndReceive(IAsyncResult asyncResult, out SocketError errorCode);
1788 //
1789 // 摘要:
1790 // 结束挂起的、从特定终结点进行异步读取。
1791 //
1792 // 参数:
1793 // asyncResult:
1794 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1795 //
1796 // endPoint:
1797 // 源 System.Net.EndPoint。
1798 //
1799 // 返回结果:
1800 // 如果成功,则返回已接收的字节数。如果不成功,则返回 0。
1801 //
1802 // 异常:
1803 // T:System.ArgumentNullException:
1804 // asyncResult 为 null。
1805 //
1806 // T:System.ArgumentException:
1807 // System.Net.Sockets.Socket.BeginReceiveFrom(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint@,System.AsyncCallback,System.Object)
1808 // 方法调用未返回 asyncResult。
1809 //
1810 // T:System.InvalidOperationException:
1811 // 先前曾为异步读取调用过 System.Net.Sockets.Socket.EndReceiveFrom(System.IAsyncResult,System.Net.EndPoint@)。
1812 //
1813 // T:System.Net.Sockets.SocketException:
1814 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1815 //
1816 // T:System.ObjectDisposedException:
1817 // System.Net.Sockets.Socket 已关闭。
1818 public int EndReceiveFrom(IAsyncResult asyncResult, ref EndPoint endPoint);
1819 //
1820 // 摘要:
1821 // 结束挂起的、从特定终结点进行异步读取。此方法还显示有关数据包而不是 System.Net.Sockets.Socket.EndReceiveFrom(System.IAsyncResult,System.Net.EndPoint@)
1822 // 的更多信息。
1823 //
1824 // 参数:
1825 // asyncResult:
1826 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1827 //
1828 // socketFlags:
1829 // 所接收数据包的 System.Net.Sockets.SocketFlags 值的按位组合。
1830 //
1831 // endPoint:
1832 // 源 System.Net.EndPoint。
1833 //
1834 // ipPacketInformation:
1835 // 所接收数据包的 System.Net.IPAddress 和接口。
1836 //
1837 // 返回结果:
1838 // 如果成功,则返回已接收的字节数。如果不成功,则返回 0。
1839 //
1840 // 异常:
1841 // T:System.ArgumentNullException:
1842 // asyncResult 为 null。- 或 -endPoint 为 null。
1843 //
1844 // T:System.ArgumentException:
1845 // System.Net.Sockets.Socket.BeginReceiveMessageFrom(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint@,System.AsyncCallback,System.Object)
1846 // 方法调用未返回 asyncResult。
1847 //
1848 // T:System.InvalidOperationException:
1849 // 先前曾为异步读取调用过 System.Net.Sockets.Socket.EndReceiveMessageFrom(System.IAsyncResult,System.Net.Sockets.SocketFlags@,System.Net.EndPoint@,System.Net.Sockets.IPPacketInformation@)。
1850 //
1851 // T:System.Net.Sockets.SocketException:
1852 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1853 //
1854 // T:System.ObjectDisposedException:
1855 // System.Net.Sockets.Socket 已关闭。
1856 public int EndReceiveMessageFrom(IAsyncResult asyncResult, ref SocketFlags socketFlags, ref EndPoint endPoint, out IPPacketInformation ipPacketInformation);
1857 //
1858 // 摘要:
1859 // 结束挂起的异步发送。
1860 //
1861 // 参数:
1862 // asyncResult:
1863 // System.IAsyncResult,它存储此异步操作的状态信息。
1864 //
1865 // 返回结果:
1866 // 如果成功,则将返回向 System.Net.Sockets.Socket 发送的字节数;否则会返回无效 System.Net.Sockets.Socket
1867 // 错误。
1868 //
1869 // 异常:
1870 // T:System.ArgumentNullException:
1871 // asyncResult 为 null。
1872 //
1873 // T:System.ArgumentException:
1874 // System.Net.Sockets.Socket.BeginSend(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object)
1875 // 方法调用后未返回 asyncResult。
1876 //
1877 // T:System.InvalidOperationException:
1878 // 先前为异步发送已调用过 System.Net.Sockets.Socket.EndSend(System.IAsyncResult)。
1879 //
1880 // T:System.Net.Sockets.SocketException:
1881 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1882 //
1883 // T:System.ObjectDisposedException:
1884 // System.Net.Sockets.Socket 已关闭。
1885 public int EndSend(IAsyncResult asyncResult);
1886 //
1887 // 摘要:
1888 // 结束挂起的异步发送。
1889 //
1890 // 参数:
1891 // asyncResult:
1892 // System.IAsyncResult,它存储此异步操作的状态信息。
1893 //
1894 // errorCode:
1895 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
1896 //
1897 // 返回结果:
1898 // 如果成功,则将返回向 System.Net.Sockets.Socket 发送的字节数;否则会返回无效 System.Net.Sockets.Socket
1899 // 错误。
1900 //
1901 // 异常:
1902 // T:System.ArgumentNullException:
1903 // asyncResult 为 null。
1904 //
1905 // T:System.ArgumentException:
1906 // System.Net.Sockets.Socket.BeginSend(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object)
1907 // 方法调用后未返回 asyncResult。
1908 //
1909 // T:System.InvalidOperationException:
1910 // 先前为异步发送已调用过 System.Net.Sockets.Socket.EndSend(System.IAsyncResult)。
1911 //
1912 // T:System.Net.Sockets.SocketException:
1913 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1914 //
1915 // T:System.ObjectDisposedException:
1916 // System.Net.Sockets.Socket 已关闭。
1917 public int EndSend(IAsyncResult asyncResult, out SocketError errorCode);
1918 //
1919 // 摘要:
1920 // 结束文件的挂起异步发送。
1921 //
1922 // 参数:
1923 // asyncResult:
1924 // System.IAsyncResult 对象,它存储此异步操作的状态信息。
1925 //
1926 // 异常:
1927 // T:System.NotSupportedException:
1928 // 此方法需要 Windows NT。
1929 //
1930 // T:System.ObjectDisposedException:
1931 // System.Net.Sockets.Socket 对象已关闭。
1932 //
1933 // T:System.ArgumentNullException:
1934 // asyncResult 为空。
1935 //
1936 // T:System.ArgumentException:
1937 // System.Net.Sockets.Socket.BeginSendFile(System.String,System.AsyncCallback,System.Object)
1938 // 方法调用未返回 asyncResult。
1939 //
1940 // T:System.InvalidOperationException:
1941 // 先前曾为异步 System.Net.Sockets.Socket.BeginSendFile(System.String,System.AsyncCallback,System.Object)
1942 // 调用过 System.Net.Sockets.Socket.EndSendFile(System.IAsyncResult)。
1943 //
1944 // T:System.Net.Sockets.SocketException:
1945 // 尝试访问套接字时发生错误。请参见下面的备注部分。
1946 public void EndSendFile(IAsyncResult asyncResult);
1947 //
1948 // 摘要:
1949 // 结束挂起的、向指定位置进行的异步发送。
1950 //
1951 // 参数:
1952 // asyncResult:
1953 // System.IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。
1954 //
1955 // 返回结果:
1956 // 如果成功,则返回已发送的字节数;否则会返回无效 System.Net.Sockets.Socket 错误。
1957 //
1958 // 异常:
1959 // T:System.ArgumentNullException:
1960 // asyncResult 为 null。
1961 //
1962 // T:System.ArgumentException:
1963 // System.Net.Sockets.Socket.BeginSendTo(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.Net.EndPoint,System.AsyncCallback,System.Object)
1964 // 方法调用未返回 asyncResult。
1965 //
1966 // T:System.InvalidOperationException:
1967 // 先前为异步发送已调用过 System.Net.Sockets.Socket.EndSendTo(System.IAsyncResult)。
1968 //
1969 // T:System.Net.Sockets.SocketException:
1970 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
1971 //
1972 // T:System.ObjectDisposedException:
1973 // System.Net.Sockets.Socket 已关闭。
1974 public int EndSendTo(IAsyncResult asyncResult);
1975 //
1976 // 摘要:
1977 // 返回指定的 System.Net.Sockets.Socket 选项的值,表示为一个对象。
1978 //
1979 // 参数:
1980 // optionLevel:
1981 // System.Net.Sockets.SocketOptionLevel 值之一。
1982 //
1983 // optionName:
1984 // System.Net.Sockets.SocketOptionName 值之一。
1985 //
1986 // 返回结果:
1987 // 一个对象,表示选项的值。当将 optionName 参数设置为 System.Net.Sockets.SocketOptionName.Linger 时,返回值为
1988 // System.Net.Sockets.LingerOption 类的一个实例。当将 optionName 设置为 System.Net.Sockets.SocketOptionName.AddMembership
1989 // 或 System.Net.Sockets.SocketOptionName.DropMembership 时,返回值为 System.Net.Sockets.MulticastOption
1990 // 类的一个实例。当 optionName 为其他任何值时,返回值为整数。
1991 //
1992 // 异常:
1993 // T:System.Net.Sockets.SocketException:
1994 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。- 或 -optionName 设置为不支持的值 System.Net.Sockets.SocketOptionName.MaxConnections。
1995 //
1996 // T:System.ObjectDisposedException:
1997 // System.Net.Sockets.Socket 已关闭。
1998 public object GetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName);
1999 //
2000 // 摘要:
2001 // 返回数组中指定的 System.Net.Sockets.Socket 选项的值。
2002 //
2003 // 参数:
2004 // optionLevel:
2005 // System.Net.Sockets.SocketOptionLevel 值之一。
2006 //
2007 // optionName:
2008 // System.Net.Sockets.SocketOptionName 值之一。
2009 //
2010 // optionLength:
2011 // 所需返回值的长度(以字节为单位)。
2012 //
2013 // 返回结果:
2014 // System.Byte 类型的数组,它包含套接字选项的值。
2015 //
2016 // 异常:
2017 // T:System.Net.Sockets.SocketException:
2018 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。- 或 -在 .NET Compact Framework 应用程序中,Windows CE 默认缓冲区的空间被设置为
2019 // 32768 字节。通过调用 Overload:System.Net.Sockets.Socket.SetSocketOption,可以更改每个套接字缓冲区的空间。
2020 //
2021 // T:System.ObjectDisposedException:
2022 // System.Net.Sockets.Socket 已关闭。
2023 public byte[] GetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, int optionLength);
2024 //
2025 // 摘要:
2026 // 返回指定的 System.Net.Sockets.Socket 选项设置,表示为字节数组。
2027 //
2028 // 参数:
2029 // optionLevel:
2030 // System.Net.Sockets.SocketOptionLevel 值之一。
2031 //
2032 // optionName:
2033 // System.Net.Sockets.SocketOptionName 值之一。
2034 //
2035 // optionValue:
2036 // System.Byte 类型的数组,用于接收选项设置。
2037 //
2038 // 异常:
2039 // T:System.Net.Sockets.SocketException:
2040 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。- 或 -在 .NET Compact Framework 应用程序中,Windows CE 默认缓冲区的空间被设置为
2041 // 32768 字节。通过调用 Overload:System.Net.Sockets.Socket.SetSocketOption,可以更改每个套接字缓冲区的空间。
2042 //
2043 // T:System.ObjectDisposedException:
2044 // System.Net.Sockets.Socket 已关闭。
2045 public void GetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, byte[] optionValue);
2046 //
2047 // 摘要:
2048 // 使用 System.Net.Sockets.IOControlCode 枚举指定控制代码,为 System.Net.Sockets.Socket 设置低级操作模式。
2049 //
2050 // 参数:
2051 // ioControlCode:
2052 // 一个 System.Net.Sockets.IOControlCode 值,它指定要执行的操作的控制代码。
2053 //
2054 // optionInValue:
2055 // System.Byte 类型的数组,包含操作要求的输入数据。
2056 //
2057 // optionOutValue:
2058 // System.Byte 类型的数组,包含由操作返回的输出数据。
2059 //
2060 // 返回结果:
2061 // optionOutValue 参数中的字节数。
2062 //
2063 // 异常:
2064 // T:System.Net.Sockets.SocketException:
2065 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2066 //
2067 // T:System.ObjectDisposedException:
2068 // System.Net.Sockets.Socket 已关闭。
2069 //
2070 // T:System.InvalidOperationException:
2071 // 尝试不使用 System.Net.Sockets.Socket.Blocking 属性更改阻止模式。
2072 public int IOControl(IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue);
2073 //
2074 // 摘要:
2075 // 使用数字控制代码,为 System.Net.Sockets.Socket 设置低级操作模式。
2076 //
2077 // 参数:
2078 // ioControlCode:
2079 // 一个 System.Int32 值,该值指定要执行的操作的控制代码。
2080 //
2081 // optionInValue:
2082 // 一个 System.Byte 数组,它包含操作需要的输入数据。
2083 //
2084 // optionOutValue:
2085 // 一个 System.Byte 数组,它包含操作返回的输出数据。
2086 //
2087 // 返回结果:
2088 // optionOutValue 参数中的字节数。
2089 //
2090 // 异常:
2091 // T:System.Net.Sockets.SocketException:
2092 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2093 //
2094 // T:System.ObjectDisposedException:
2095 // System.Net.Sockets.Socket 已关闭。
2096 //
2097 // T:System.InvalidOperationException:
2098 // 尝试不使用 System.Net.Sockets.Socket.Blocking 属性更改阻止模式。
2099 //
2100 // T:System.Security.SecurityException:
2101 // 调用堆栈中的调用方没有所需的权限。
2102 public int IOControl(int ioControlCode, byte[] optionInValue, byte[] optionOutValue);
2103 //
2104 // 摘要:
2105 // 将 System.Net.Sockets.Socket 置于侦听状态。
2106 //
2107 // 参数:
2108 // backlog:
2109 // 挂起连接队列的最大长度。
2110 //
2111 // 异常:
2112 // T:System.Net.Sockets.SocketException:
2113 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2114 //
2115 // T:System.ObjectDisposedException:
2116 // System.Net.Sockets.Socket 已关闭。
2117 public void Listen(int backlog);
2118 //
2119 // 摘要:
2120 // 确定 System.Net.Sockets.Socket 的状态。
2121 //
2122 // 参数:
2123 // microSeconds:
2124 // 等待响应的时间(以微秒为单位)。
2125 //
2126 // mode:
2127 // System.Net.Sockets.SelectMode 值之一。
2128 //
2129 // 返回结果:
2130 // 基于 mode 参数中传递的轮询模式值的 System.Net.Sockets.Socket 的状态。模式返回值System.Net.Sockets.SelectMode.SelectRead如果已调用
2131 // System.Net.Sockets.Socket.Listen(System.Int32) 并且有挂起的连接,则为 true。- 或 -如果有数据可供读取,则为
2132 // true。- 或 -如果连接已关闭、重置或终止,则返回 true;否则,返回 false。System.Net.Sockets.SelectMode.SelectWrite如果正在处理
2133 // System.Net.Sockets.Socket.Connect(System.Net.EndPoint) 并且连接已成功,则为 true;- 或 -如果可以发送数据,则返回
2134 // true;否则,返回 false。System.Net.Sockets.SelectMode.SelectError如果正在处理不阻止的 System.Net.Sockets.Socket.Connect(System.Net.EndPoint),并且连接已失败,则为
2135 // true;- 或 -如果 System.Net.Sockets.SocketOptionName.OutOfBandInline 未设置,并且带外数据可用,则为
2136 // true;否则,返回 false。
2137 //
2138 // 异常:
2139 // T:System.NotSupportedException:
2140 // mode 参数不是一个 System.Net.Sockets.SelectMode 值。
2141 //
2142 // T:System.Net.Sockets.SocketException:
2143 // 尝试访问套接字时发生错误。请参见下面的备注。
2144 //
2145 // T:System.ObjectDisposedException:
2146 // System.Net.Sockets.Socket 已关闭。
2147 public bool Poll(int microSeconds, SelectMode mode);
2148 //
2149 // 摘要:
2150 // 从绑定的 System.Net.Sockets.Socket 套接字接收数据,将数据存入接收缓冲区。
2151 //
2152 // 参数:
2153 // buffer:
2154 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2155 //
2156 // 返回结果:
2157 // 接收到的字节数。
2158 //
2159 // 异常:
2160 // T:System.ArgumentNullException:
2161 // buffer 为 null。
2162 //
2163 // T:System.Net.Sockets.SocketException:
2164 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2165 //
2166 // T:System.ObjectDisposedException:
2167 // System.Net.Sockets.Socket 已关闭。
2168 //
2169 // T:System.Security.SecurityException:
2170 // 调用堆栈中的调用方没有所需的权限。
2171 public int Receive(byte[] buffer);
2172 //
2173 // 摘要:
2174 // 从绑定的 System.Net.Sockets.Socket 接收数据,将数据存入接收缓冲区列表中。
2175 //
2176 // 参数:
2177 // buffers:
2178 // System.Byte 类型的一个 System.ArraySegment`1 列表,包含接收的数据。
2179 //
2180 // 返回结果:
2181 // 接收到的字节数。
2182 //
2183 // 异常:
2184 // T:System.ArgumentNullException:
2185 // buffer 参数为 null。
2186 //
2187 // T:System.Net.Sockets.SocketException:
2188 // 尝试访问套接字时出现错误。有关更多信息,请参见备注部分。
2189 //
2190 // T:System.ObjectDisposedException:
2191 // System.Net.Sockets.Socket 已关闭。
2192 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
2193 public int Receive(IList<ArraySegment<byte>> buffers);
2194 //
2195 // 摘要:
2196 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收数据,将数据存入接收缓冲区。
2197 //
2198 // 参数:
2199 // buffer:
2200 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2201 //
2202 // socketFlags:
2203 // System.Net.Sockets.SocketFlags 值的按位组合。
2204 //
2205 // 返回结果:
2206 // 接收到的字节数。
2207 //
2208 // 异常:
2209 // T:System.ArgumentNullException:
2210 // buffer 为 null。
2211 //
2212 // T:System.Net.Sockets.SocketException:
2213 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2214 //
2215 // T:System.ObjectDisposedException:
2216 // System.Net.Sockets.Socket 已关闭。
2217 //
2218 // T:System.Security.SecurityException:
2219 // 调用堆栈中的调用方没有所需的权限。
2220 public int Receive(byte[] buffer, SocketFlags socketFlags);
2221 //
2222 // 摘要:
2223 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收数据,将数据存入接收缓冲区列表中。
2224 //
2225 // 参数:
2226 // buffers:
2227 // System.Byte 类型的一个 System.ArraySegment`1 列表,包含接收的数据。
2228 //
2229 // socketFlags:
2230 // System.Net.Sockets.SocketFlags 值的按位组合。
2231 //
2232 // 返回结果:
2233 // 接收到的字节数。
2234 //
2235 // 异常:
2236 // T:System.ArgumentNullException:
2237 // buffers 为 null。- 或 -buffers.Count 是零。
2238 //
2239 // T:System.Net.Sockets.SocketException:
2240 // 尝试访问套接字时出现错误。有关更多信息,请参见备注部分。
2241 //
2242 // T:System.ObjectDisposedException:
2243 // System.Net.Sockets.Socket 已关闭。
2244 public int Receive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags);
2245 //
2246 // 摘要:
2247 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收指定字节数的数据,并将数据存入接收缓冲区。
2248 //
2249 // 参数:
2250 // buffer:
2251 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2252 //
2253 // size:
2254 // 要接收的字节数。
2255 //
2256 // socketFlags:
2257 // System.Net.Sockets.SocketFlags 值的按位组合。
2258 //
2259 // 返回结果:
2260 // 接收到的字节数。
2261 //
2262 // 异常:
2263 // T:System.ArgumentNullException:
2264 // buffer 为 null。
2265 //
2266 // T:System.ArgumentOutOfRangeException:
2267 // size 超出了 buffer 的大小。
2268 //
2269 // T:System.Net.Sockets.SocketException:
2270 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2271 //
2272 // T:System.ObjectDisposedException:
2273 // System.Net.Sockets.Socket 已关闭。
2274 //
2275 // T:System.Security.SecurityException:
2276 // 调用堆栈中的调用方没有所需的权限。
2277 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
2278 public int Receive(byte[] buffer, int size, SocketFlags socketFlags);
2279 //
2280 // 摘要:
2281 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收数据,将数据存入接收缓冲区列表中。
2282 //
2283 // 参数:
2284 // buffers:
2285 // System.Byte 类型的一个 System.ArraySegment`1 列表,包含接收的数据。
2286 //
2287 // socketFlags:
2288 // System.Net.Sockets.SocketFlags 值的按位组合。
2289 //
2290 // errorCode:
2291 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
2292 //
2293 // 返回结果:
2294 // 接收到的字节数。
2295 //
2296 // 异常:
2297 // T:System.ArgumentNullException:
2298 // buffers 为 null。- 或 -buffers.Count 是零。
2299 //
2300 // T:System.Net.Sockets.SocketException:
2301 // 尝试访问套接字时出现错误。有关更多信息,请参见备注部分。
2302 //
2303 // T:System.ObjectDisposedException:
2304 // System.Net.Sockets.Socket 已关闭。
2305 public int Receive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode);
2306 //
2307 // 摘要:
2308 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收指定的字节数,存入接收缓冲区的指定偏移量位置。
2309 //
2310 // 参数:
2311 // buffer:
2312 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2313 //
2314 // offset:
2315 // buffer 中存储所接收数据的位置。
2316 //
2317 // size:
2318 // 要接收的字节数。
2319 //
2320 // socketFlags:
2321 // System.Net.Sockets.SocketFlags 值的按位组合。
2322 //
2323 // 返回结果:
2324 // 接收到的字节数。
2325 //
2326 // 异常:
2327 // T:System.ArgumentNullException:
2328 // buffer 为 null。
2329 //
2330 // T:System.ArgumentOutOfRangeException:
2331 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
2332 // offset 参数的值。
2333 //
2334 // T:System.Net.Sockets.SocketException:
2335 // socketFlags 不是值的有效组合。- 或 -未设置 System.Net.Sockets.Socket.LocalEndPoint 属性。- 或
2336 // -访问 System.Net.Sockets.Socket 时发生操作系统错误。
2337 //
2338 // T:System.ObjectDisposedException:
2339 // System.Net.Sockets.Socket 已关闭。
2340 //
2341 // T:System.Security.SecurityException:
2342 // 调用堆栈中的调用方没有所需的权限。
2343 public int Receive(byte[] buffer, int offset, int size, SocketFlags socketFlags);
2344 //
2345 // 摘要:
2346 // 使用指定的 System.Net.Sockets.SocketFlags,从绑定的 System.Net.Sockets.Socket 接收数据,将数据存入接收缓冲区。
2347 //
2348 // 参数:
2349 // buffer:
2350 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2351 //
2352 // offset:
2353 // buffer 参数中存储所接收数据的位置。
2354 //
2355 // size:
2356 // 要接收的字节数。
2357 //
2358 // socketFlags:
2359 // System.Net.Sockets.SocketFlags 值的按位组合。
2360 //
2361 // errorCode:
2362 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
2363 //
2364 // 返回结果:
2365 // 接收到的字节数。
2366 //
2367 // 异常:
2368 // T:System.ArgumentNullException:
2369 // buffer 为 null。
2370 //
2371 // T:System.ArgumentOutOfRangeException:
2372 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
2373 // offset 参数的值。
2374 //
2375 // T:System.Net.Sockets.SocketException:
2376 // socketFlags 不是值的有效组合。- 或 -未设置 System.Net.Sockets.Socket.LocalEndPoint 属性。- 或
2377 // -访问 System.Net.Sockets.Socket 时发生操作系统错误。
2378 //
2379 // T:System.ObjectDisposedException:
2380 // System.Net.Sockets.Socket 已关闭。
2381 //
2382 // T:System.Security.SecurityException:
2383 // 调用堆栈中的调用方没有所需的权限。
2384 public int Receive(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode);
2385 //
2386 // 摘要:
2387 // 开始一个异步请求以便从连接的 System.Net.Sockets.Socket 对象中接收数据。
2388 //
2389 // 参数:
2390 // e:
2391 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
2392 //
2393 // 返回结果:
2394 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2395 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2396 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
2397 //
2398 // 异常:
2399 // T:System.ArgumentException:
2400 // 参数无效。e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Buffer 或 System.Net.Sockets.SocketAsyncEventArgs.BufferList
2401 // 属性必须引用有效的缓冲区。可以设置这两个属性中的某一个,但不能同时设置这两个属性。
2402 //
2403 // T:System.InvalidOperationException:
2404 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
2405 //
2406 // T:System.NotSupportedException:
2407 // 此方法需要 Windows XP 或更高版本。
2408 //
2409 // T:System.ObjectDisposedException:
2410 // System.Net.Sockets.Socket 已关闭。
2411 //
2412 // T:System.Net.Sockets.SocketException:
2413 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2414 public bool ReceiveAsync(SocketAsyncEventArgs e);
2415 //
2416 // 摘要:
2417 // 将数据报接收到数据缓冲区并存储终结点。
2418 //
2419 // 参数:
2420 // buffer:
2421 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2422 //
2423 // remoteEP:
2424 // 按引用传递的 System.Net.EndPoint,表示远程服务器。
2425 //
2426 // 返回结果:
2427 // 接收到的字节数。
2428 //
2429 // 异常:
2430 // T:System.ArgumentNullException:
2431 // buffer 为 null。- 或 -remoteEP 为 null。
2432 //
2433 // T:System.Net.Sockets.SocketException:
2434 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2435 //
2436 // T:System.ObjectDisposedException:
2437 // System.Net.Sockets.Socket 已关闭。
2438 //
2439 // T:System.Security.SecurityException:
2440 // 调用堆栈中的调用方没有所需的权限。
2441 public int ReceiveFrom(byte[] buffer, ref EndPoint remoteEP);
2442 //
2443 // 摘要:
2444 // 使用指定的 System.Net.Sockets.SocketFlags 将数据报接收到数据缓冲区并存储终结点。
2445 //
2446 // 参数:
2447 // buffer:
2448 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2449 //
2450 // socketFlags:
2451 // System.Net.Sockets.SocketFlags 值的按位组合。
2452 //
2453 // remoteEP:
2454 // 按引用传递的 System.Net.EndPoint,表示远程服务器。
2455 //
2456 // 返回结果:
2457 // 接收到的字节数。
2458 //
2459 // 异常:
2460 // T:System.ArgumentNullException:
2461 // buffer 为 null。- 或 -remoteEP 为 null。
2462 //
2463 // T:System.Net.Sockets.SocketException:
2464 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2465 //
2466 // T:System.ObjectDisposedException:
2467 // System.Net.Sockets.Socket 已关闭。
2468 //
2469 // T:System.Security.SecurityException:
2470 // 调用堆栈中的调用方没有所需的权限。
2471 public int ReceiveFrom(byte[] buffer, SocketFlags socketFlags, ref EndPoint remoteEP);
2472 //
2473 // 摘要:
2474 // 使用指定的 System.Net.Sockets.SocketFlags 将指定的字节数接收到数据缓冲区并存储终结点。
2475 //
2476 // 参数:
2477 // buffer:
2478 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2479 //
2480 // size:
2481 // 要接收的字节数。
2482 //
2483 // socketFlags:
2484 // System.Net.Sockets.SocketFlags 值的按位组合。
2485 //
2486 // remoteEP:
2487 // 按引用传递的 System.Net.EndPoint,表示远程服务器。
2488 //
2489 // 返回结果:
2490 // 接收到的字节数。
2491 //
2492 // 异常:
2493 // T:System.ArgumentNullException:
2494 // buffer 为 null。- 或 -remoteEP 为 null。
2495 //
2496 // T:System.ArgumentOutOfRangeException:
2497 // size 小于 0。- 或 -size 大于 buffer 的长度。
2498 //
2499 // T:System.Net.Sockets.SocketException:
2500 // socketFlags 不是值的有效组合。- 或 -未设置 System.Net.Sockets.Socket.LocalEndPoint 属性。- 或
2501 // -访问 System.Net.Sockets.Socket 时发生操作系统错误。
2502 //
2503 // T:System.ObjectDisposedException:
2504 // System.Net.Sockets.Socket 已关闭。
2505 //
2506 // T:System.Security.SecurityException:
2507 // 调用堆栈中的调用方没有所需的权限。
2508 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
2509 public int ReceiveFrom(byte[] buffer, int size, SocketFlags socketFlags, ref EndPoint remoteEP);
2510 //
2511 // 摘要:
2512 // 使用指定的 System.Net.Sockets.SocketFlags 将指定字节数的数据接收到数据缓冲区的指定位置并存储终结点。
2513 //
2514 // 参数:
2515 // buffer:
2516 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2517 //
2518 // offset:
2519 // buffer 参数中存储所接收数据的位置。
2520 //
2521 // size:
2522 // 要接收的字节数。
2523 //
2524 // socketFlags:
2525 // System.Net.Sockets.SocketFlags 值的按位组合。
2526 //
2527 // remoteEP:
2528 // 按引用传递的 System.Net.EndPoint,表示远程服务器。
2529 //
2530 // 返回结果:
2531 // 接收到的字节数。
2532 //
2533 // 异常:
2534 // T:System.ArgumentNullException:
2535 // buffer 为 null。- 或 -remoteEP 为 null。
2536 //
2537 // T:System.ArgumentOutOfRangeException:
2538 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去偏移量参数的值。
2539 //
2540 // T:System.Net.Sockets.SocketException:
2541 // socketFlags 不是值的有效组合。- 或 -未设置 System.Net.Sockets.Socket.LocalEndPoint 属性。- 或
2542 // -尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2543 //
2544 // T:System.ObjectDisposedException:
2545 // System.Net.Sockets.Socket 已关闭。
2546 public int ReceiveFrom(byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP);
2547 //
2548 // 摘要:
2549 // 开始从指定网络设备中异步接收数据。
2550 //
2551 // 参数:
2552 // e:
2553 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
2554 //
2555 // 返回结果:
2556 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2557 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2558 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
2559 //
2560 // 异常:
2561 // T:System.ArgumentNullException:
2562 // System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为 null。
2563 //
2564 // T:System.InvalidOperationException:
2565 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
2566 //
2567 // T:System.NotSupportedException:
2568 // 此方法需要 Windows XP 或更高版本。
2569 //
2570 // T:System.ObjectDisposedException:
2571 // System.Net.Sockets.Socket 已关闭。
2572 //
2573 // T:System.Net.Sockets.SocketException:
2574 // 尝试访问套接字时发生错误。
2575 public bool ReceiveFromAsync(SocketAsyncEventArgs e);
2576 //
2577 // 摘要:
2578 // 使用指定的 System.Net.Sockets.SocketFlags 将指定字节数的数据接收到数据缓冲区的指定位置,然后存储终结点和数据包信息。
2579 //
2580 // 参数:
2581 // buffer:
2582 // System.Byte 类型的数组,它是存储接收到的数据的位置。
2583 //
2584 // offset:
2585 // buffer 参数中存储所接收数据的位置。
2586 //
2587 // size:
2588 // 要接收的字节数。
2589 //
2590 // socketFlags:
2591 // System.Net.Sockets.SocketFlags 值的按位组合。
2592 //
2593 // remoteEP:
2594 // 按引用传递的 System.Net.EndPoint,表示远程服务器。
2595 //
2596 // ipPacketInformation:
2597 // System.Net.Sockets.IPPacketInformation,它保存地址和接口信息。
2598 //
2599 // 返回结果:
2600 // 接收到的字节数。
2601 //
2602 // 异常:
2603 // T:System.ArgumentNullException:
2604 // buffer 为 null。- 或 -remoteEP 为 null。
2605 //
2606 // T:System.ArgumentOutOfRangeException:
2607 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去偏移量参数的值。
2608 //
2609 // T:System.Net.Sockets.SocketException:
2610 // socketFlags 不是值的有效组合。- 或 -未设置 System.Net.Sockets.Socket.LocalEndPoint 属性。- 或
2611 // -.NET Framework 运行在 AMD 64 位处理器上。- 或 -尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2612 //
2613 // T:System.ObjectDisposedException:
2614 // System.Net.Sockets.Socket 已关闭。
2615 //
2616 // T:System.NotSupportedException:
2617 // 操作系统为 Windows 2000 或更低版本,而此方法需要在 Windows XP 中使用。
2618 public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref SocketFlags socketFlags, ref EndPoint remoteEP, out IPPacketInformation ipPacketInformation);
2619 //
2620 // 摘要:
2621 // 开始使用指定的 System.Net.Sockets.SocketAsyncEventArgs.SocketFlags 将指定字节数的数据异步接收到数据缓冲区的指定位置,并存储终结点和数据包信息。
2622 //
2623 // 参数:
2624 // e:
2625 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
2626 //
2627 // 返回结果:
2628 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2629 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2630 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
2631 //
2632 // 异常:
2633 // T:System.ArgumentNullException:
2634 // System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为 null。
2635 //
2636 // T:System.NotSupportedException:
2637 // 此方法需要 Windows XP 或更高版本。
2638 //
2639 // T:System.ObjectDisposedException:
2640 // System.Net.Sockets.Socket 已关闭。
2641 //
2642 // T:System.Net.Sockets.SocketException:
2643 // 尝试访问套接字时发生错误。
2644 public bool ReceiveMessageFromAsync(SocketAsyncEventArgs e);
2645 //
2646 // 摘要:
2647 // 将数据发送到连接的 System.Net.Sockets.Socket。
2648 //
2649 // 参数:
2650 // buffer:
2651 // System.Byte 类型的数组,它包含要发送的数据。
2652 //
2653 // 返回结果:
2654 // 已发送到 System.Net.Sockets.Socket 的字节数。
2655 //
2656 // 异常:
2657 // T:System.ArgumentNullException:
2658 // buffer 为 null。
2659 //
2660 // T:System.Net.Sockets.SocketException:
2661 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2662 //
2663 // T:System.ObjectDisposedException:
2664 // System.Net.Sockets.Socket 已关闭。
2665 public int Send(byte[] buffer);
2666 //
2667 // 摘要:
2668 // 将列表中的一组缓冲区发送到连接的 System.Net.Sockets.Socket。
2669 //
2670 // 参数:
2671 // buffers:
2672 // System.Byte 类型的 System.ArraySegment`1 的列表,它包含要发送的数据。
2673 //
2674 // 返回结果:
2675 // 已发送到 System.Net.Sockets.Socket 的字节数。
2676 //
2677 // 异常:
2678 // T:System.ArgumentNullException:
2679 // buffers 为 null。
2680 //
2681 // T:System.ArgumentException:
2682 // buffers 为空。
2683 //
2684 // T:System.Net.Sockets.SocketException:
2685 // 尝试访问套接字时发生错误。请参见下面的备注部分。
2686 //
2687 // T:System.ObjectDisposedException:
2688 // System.Net.Sockets.Socket 已关闭。
2689 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
2690 public int Send(IList<ArraySegment<byte>> buffers);
2691 //
2692 // 摘要:
2693 // 使用指定的 System.Net.Sockets.SocketFlags 将数据发送到连接的 System.Net.Sockets.Socket。
2694 //
2695 // 参数:
2696 // buffer:
2697 // System.Byte 类型的数组,它包含要发送的数据。
2698 //
2699 // socketFlags:
2700 // System.Net.Sockets.SocketFlags 值的按位组合。
2701 //
2702 // 返回结果:
2703 // 已发送到 System.Net.Sockets.Socket 的字节数。
2704 //
2705 // 异常:
2706 // T:System.ArgumentNullException:
2707 // buffer 为 null。
2708 //
2709 // T:System.Net.Sockets.SocketException:
2710 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2711 //
2712 // T:System.ObjectDisposedException:
2713 // System.Net.Sockets.Socket 已关闭。
2714 public int Send(byte[] buffer, SocketFlags socketFlags);
2715 //
2716 // 摘要:
2717 // 使用指定的 System.Net.Sockets.SocketFlags,将列表中的一组缓冲区发送到连接的 System.Net.Sockets.Socket。
2718 //
2719 // 参数:
2720 // buffers:
2721 // System.Byte 类型的 System.ArraySegment`1 的列表,它包含要发送的数据。
2722 //
2723 // socketFlags:
2724 // System.Net.Sockets.SocketFlags 值的按位组合。
2725 //
2726 // 返回结果:
2727 // 已发送到 System.Net.Sockets.Socket 的字节数。
2728 //
2729 // 异常:
2730 // T:System.ArgumentNullException:
2731 // buffers 为 null。
2732 //
2733 // T:System.ArgumentException:
2734 // buffers 为空。
2735 //
2736 // T:System.Net.Sockets.SocketException:
2737 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2738 //
2739 // T:System.ObjectDisposedException:
2740 // System.Net.Sockets.Socket 已关闭。
2741 public int Send(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags);
2742 //
2743 // 摘要:
2744 // 使用指定的 System.Net.Sockets.SocketFlags,将列表中的一组缓冲区发送到连接的 System.Net.Sockets.Socket。
2745 //
2746 // 参数:
2747 // buffers:
2748 // System.Byte 类型的 System.ArraySegment`1 的列表,它包含要发送的数据。
2749 //
2750 // socketFlags:
2751 // System.Net.Sockets.SocketFlags 值的按位组合。
2752 //
2753 // errorCode:
2754 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
2755 //
2756 // 返回结果:
2757 // 已发送到 System.Net.Sockets.Socket 的字节数。
2758 //
2759 // 异常:
2760 // T:System.ArgumentNullException:
2761 // buffers 为 null。
2762 //
2763 // T:System.ArgumentException:
2764 // buffers 为空。
2765 //
2766 // T:System.Net.Sockets.SocketException:
2767 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2768 //
2769 // T:System.ObjectDisposedException:
2770 // System.Net.Sockets.Socket 已关闭。
2771 public int Send(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode);
2772 //
2773 // 摘要:
2774 // 使用指定的 System.Net.Sockets.SocketFlags,将指定字节数的数据发送到已连接的 System.Net.Sockets.Socket。
2775 //
2776 // 参数:
2777 // buffer:
2778 // System.Byte 类型的数组,它包含要发送的数据。
2779 //
2780 // size:
2781 // 要发送的字节数。
2782 //
2783 // socketFlags:
2784 // System.Net.Sockets.SocketFlags 值的按位组合。
2785 //
2786 // 返回结果:
2787 // 已发送到 System.Net.Sockets.Socket 的字节数。
2788 //
2789 // 异常:
2790 // T:System.ArgumentNullException:
2791 // buffer 为 null。
2792 //
2793 // T:System.ArgumentOutOfRangeException:
2794 // size 小于 0 或超过缓冲区的大小。
2795 //
2796 // T:System.Net.Sockets.SocketException:
2797 // socketFlags 不是值的有效组合。- 或 -访问套接字时发生操作系统错误。有关更多信息,请参见备注部分。
2798 //
2799 // T:System.ObjectDisposedException:
2800 // System.Net.Sockets.Socket 已关闭。
2801 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
2802 public int Send(byte[] buffer, int size, SocketFlags socketFlags);
2803 //
2804 // 摘要:
2805 // 使用指定的 System.Net.Sockets.SocketFlags,将指定字节数的数据发送到已连接的 System.Net.Sockets.Socket(从指定的偏移量开始)。
2806 //
2807 // 参数:
2808 // buffer:
2809 // System.Byte 类型的数组,它包含要发送的数据。
2810 //
2811 // offset:
2812 // 数据缓冲区中开始发送数据的位置。
2813 //
2814 // size:
2815 // 要发送的字节数。
2816 //
2817 // socketFlags:
2818 // System.Net.Sockets.SocketFlags 值的按位组合。
2819 //
2820 // 返回结果:
2821 // 已发送到 System.Net.Sockets.Socket 的字节数。
2822 //
2823 // 异常:
2824 // T:System.ArgumentNullException:
2825 // buffer 为 null。
2826 //
2827 // T:System.ArgumentOutOfRangeException:
2828 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
2829 // offset 参数的值。
2830 //
2831 // T:System.Net.Sockets.SocketException:
2832 // socketFlags 不是值的有效组合。- 或 -访问 System.Net.Sockets.Socket 时发生操作系统错误。有关更多信息,请参见备注部分。
2833 //
2834 // T:System.ObjectDisposedException:
2835 // System.Net.Sockets.Socket 已关闭。
2836 public int Send(byte[] buffer, int offset, int size, SocketFlags socketFlags);
2837 //
2838 // 摘要:
2839 // 从指定的偏移量开始使用指定的 System.Net.Sockets.SocketFlags 将指定字节数的数据发送到连接的 System.Net.Sockets.Socket。
2840 //
2841 // 参数:
2842 // buffer:
2843 // System.Byte 类型的数组,它包含要发送的数据。
2844 //
2845 // offset:
2846 // 数据缓冲区中开始发送数据的位置。
2847 //
2848 // size:
2849 // 要发送的字节数。
2850 //
2851 // socketFlags:
2852 // System.Net.Sockets.SocketFlags 值的按位组合。
2853 //
2854 // errorCode:
2855 // 一个 System.Net.Sockets.SocketError 对象,它存储套接字错误。
2856 //
2857 // 返回结果:
2858 // 已发送到 System.Net.Sockets.Socket 的字节数。
2859 //
2860 // 异常:
2861 // T:System.ArgumentNullException:
2862 // buffer 为 null。
2863 //
2864 // T:System.ArgumentOutOfRangeException:
2865 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
2866 // offset 参数的值。
2867 //
2868 // T:System.Net.Sockets.SocketException:
2869 // socketFlags 不是值的有效组合。- 或 -访问 System.Net.Sockets.Socket 时发生操作系统错误。有关更多信息,请参见备注部分。
2870 //
2871 // T:System.ObjectDisposedException:
2872 // System.Net.Sockets.Socket 已关闭。
2873 public int Send(byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode);
2874 //
2875 // 摘要:
2876 // 将数据异步发送到连接的 System.Net.Sockets.Socket 对象。
2877 //
2878 // 参数:
2879 // e:
2880 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
2881 //
2882 // 返回结果:
2883 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2884 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2885 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
2886 //
2887 // 异常:
2888 // T:System.ArgumentException:
2889 // e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Buffer 或 System.Net.Sockets.SocketAsyncEventArgs.BufferList
2890 // 属性必须引用有效的缓冲区。可以设置这两个属性中的某一个,但不能同时设置这两个属性。
2891 //
2892 // T:System.InvalidOperationException:
2893 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
2894 //
2895 // T:System.NotSupportedException:
2896 // 此方法需要 Windows XP 或更高版本。
2897 //
2898 // T:System.ObjectDisposedException:
2899 // System.Net.Sockets.Socket 已关闭。
2900 //
2901 // T:System.Net.Sockets.SocketException:
2902 // System.Net.Sockets.Socket 尚未连接或者尚未通过 System.Net.Sockets.Socket.Accept、System.Net.Sockets.Socket.AcceptAsync(System.Net.Sockets.SocketAsyncEventArgs)
2903 // 或 Overload:System.Net.Sockets.Socket.BeginAccept 方法获得。
2904 public bool SendAsync(SocketAsyncEventArgs e);
2905 //
2906 // 摘要:
2907 // 使用 System.Net.Sockets.TransmitFileOptions.UseDefaultWorkerThread 传输标志,将文件 fileName
2908 // 发送到连接的 System.Net.Sockets.Socket 对象。
2909 //
2910 // 参数:
2911 // fileName:
2912 // 一个 System.String,它包含要发送的文件的路径和名称。此参数可以为 null。
2913 //
2914 // 异常:
2915 // T:System.NotSupportedException:
2916 // 套接字未连接到远程主机。
2917 //
2918 // T:System.ObjectDisposedException:
2919 // System.Net.Sockets.Socket 对象已关闭。
2920 //
2921 // T:System.InvalidOperationException:
2922 // System.Net.Sockets.Socket 对象不处于阻止模式,无法接受此同步调用。
2923 //
2924 // T:System.IO.FileNotFoundException:
2925 // 未找到文件 fileName。
2926 //
2927 // T:System.Net.Sockets.SocketException:
2928 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2929 public void SendFile(string fileName);
2930 //
2931 // 摘要:
2932 // 使用指定的 System.Net.Sockets.TransmitFileOptions 值,将文件 fileName 和数据缓冲区发送到连接的 System.Net.Sockets.Socket
2933 // 对象。
2934 //
2935 // 参数:
2936 // fileName:
2937 // 一个 System.String,它包含要发送的文件的路径和名称。此参数可以为 null。
2938 //
2939 // preBuffer:
2940 // 一个 System.Byte 数组,包含发送文件前要发送的数据。此参数可以为 null。
2941 //
2942 // postBuffer:
2943 // 一个 System.Byte 数组,包含发送文件后要发送的数据。此参数可以为 null。
2944 //
2945 // flags:
2946 // 一个或多个 System.Net.Sockets.TransmitFileOptions 值。
2947 //
2948 // 异常:
2949 // T:System.NotSupportedException:
2950 // 操作系统不是 Windows NT 或更高版本。- 或 -套接字未连接到远程主机。
2951 //
2952 // T:System.ObjectDisposedException:
2953 // System.Net.Sockets.Socket 对象已关闭。
2954 //
2955 // T:System.InvalidOperationException:
2956 // System.Net.Sockets.Socket 对象不处于阻止模式,无法接受此同步调用。
2957 //
2958 // T:System.IO.FileNotFoundException:
2959 // 未找到文件 fileName。
2960 //
2961 // T:System.Net.Sockets.SocketException:
2962 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
2963 public void SendFile(string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags);
2964 //
2965 // 摘要:
2966 // 将文件集合或者内存中的数据缓冲区以异步方法发送给连接的 System.Net.Sockets.Socket 对象。
2967 //
2968 // 参数:
2969 // e:
2970 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
2971 //
2972 // 返回结果:
2973 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2974 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
2975 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
2976 //
2977 // 异常:
2978 // T:System.IO.FileNotFoundException:
2979 // 未找到在 System.Net.Sockets.SendPacketsElement.FilePath 属性中指定的文件。
2980 //
2981 // T:System.InvalidOperationException:
2982 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
2983 //
2984 // T:System.NotSupportedException:
2985 // 此方法需要 Windows XP 或更高版本。如果 System.Net.Sockets.Socket 未连接到远程主机,也会发生此异常。
2986 //
2987 // T:System.ObjectDisposedException:
2988 // System.Net.Sockets.Socket 已关闭。
2989 //
2990 // T:System.Net.Sockets.SocketException:
2991 // 使用的是无连接 System.Net.Sockets.Socket,并且所发送的文件超过了基础传输的最大数据包大小。
2992 public bool SendPacketsAsync(SocketAsyncEventArgs e);
2993 //
2994 // 摘要:
2995 // 将数据发送到指定的终结点。
2996 //
2997 // 参数:
2998 // buffer:
2999 // System.Byte 类型的数组,它包含要发送的数据。
3000 //
3001 // remoteEP:
3002 // System.Net.EndPoint,它表示数据的目标位置。
3003 //
3004 // 返回结果:
3005 // 已发送的字节数。
3006 //
3007 // 异常:
3008 // T:System.ArgumentNullException:
3009 // buffer 为 null。- 或 -remoteEP 为 null。
3010 //
3011 // T:System.Net.Sockets.SocketException:
3012 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3013 //
3014 // T:System.ObjectDisposedException:
3015 // System.Net.Sockets.Socket 已关闭。
3016 public int SendTo(byte[] buffer, EndPoint remoteEP);
3017 //
3018 // 摘要:
3019 // 使用指定的 System.Net.Sockets.SocketFlags,将数据发送到特定的终结点。
3020 //
3021 // 参数:
3022 // buffer:
3023 // System.Byte 类型的数组,它包含要发送的数据。
3024 //
3025 // socketFlags:
3026 // System.Net.Sockets.SocketFlags 值的按位组合。
3027 //
3028 // remoteEP:
3029 // System.Net.EndPoint,它表示数据的目标位置。
3030 //
3031 // 返回结果:
3032 // 已发送的字节数。
3033 //
3034 // 异常:
3035 // T:System.ArgumentNullException:
3036 // buffer 为 null。- 或 -remoteEP 为 null。
3037 //
3038 // T:System.Net.Sockets.SocketException:
3039 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3040 //
3041 // T:System.ObjectDisposedException:
3042 // System.Net.Sockets.Socket 已关闭。
3043 public int SendTo(byte[] buffer, SocketFlags socketFlags, EndPoint remoteEP);
3044 //
3045 // 摘要:
3046 // 使用指定的 System.Net.Sockets.SocketFlags,将指定字节数的数据发送到指定的终结点。
3047 //
3048 // 参数:
3049 // buffer:
3050 // System.Byte 类型的数组,它包含要发送的数据。
3051 //
3052 // size:
3053 // 要发送的字节数。
3054 //
3055 // socketFlags:
3056 // System.Net.Sockets.SocketFlags 值的按位组合。
3057 //
3058 // remoteEP:
3059 // System.Net.EndPoint,它表示数据的目标位置。
3060 //
3061 // 返回结果:
3062 // 已发送的字节数。
3063 //
3064 // 异常:
3065 // T:System.ArgumentNullException:
3066 // buffer 为 null。- 或 -remoteEP 为 null。
3067 //
3068 // T:System.ArgumentOutOfRangeException:
3069 // 指定的 size 超出 buffer 的大小。
3070 //
3071 // T:System.Net.Sockets.SocketException:
3072 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3073 //
3074 // T:System.ObjectDisposedException:
3075 // System.Net.Sockets.Socket 已关闭。
3076 [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
3077 public int SendTo(byte[] buffer, int size, SocketFlags socketFlags, EndPoint remoteEP);
3078 //
3079 // 摘要:
3080 // 使用指定的 System.Net.Sockets.SocketFlags,将指定字节数的数据发送到指定终结点(从缓冲区中的指定位置开始)。
3081 //
3082 // 参数:
3083 // buffer:
3084 // System.Byte 类型的数组,它包含要发送的数据。
3085 //
3086 // offset:
3087 // 数据缓冲区中开始发送数据的位置。
3088 //
3089 // size:
3090 // 要发送的字节数。
3091 //
3092 // socketFlags:
3093 // System.Net.Sockets.SocketFlags 值的按位组合。
3094 //
3095 // remoteEP:
3096 // System.Net.EndPoint,它表示数据的目标位置。
3097 //
3098 // 返回结果:
3099 // 已发送的字节数。
3100 //
3101 // 异常:
3102 // T:System.ArgumentNullException:
3103 // buffer 为 null。- 或 -remoteEP 为 null。
3104 //
3105 // T:System.ArgumentOutOfRangeException:
3106 // offset 小于 0。- 或 -offset 大于 buffer 的长度。- 或 -size 小于 0。- 或 -size 大于 buffer 的长度减去
3107 // offset 参数的值。
3108 //
3109 // T:System.Net.Sockets.SocketException:
3110 // socketFlags 不是值的有效组合。- 或 -访问 System.Net.Sockets.Socket 时发生操作系统错误。有关更多信息,请参见备注部分。
3111 //
3112 // T:System.ObjectDisposedException:
3113 // System.Net.Sockets.Socket 已关闭。
3114 //
3115 // T:System.Security.SecurityException:
3116 // 调用堆栈中的调用方没有所需的权限。
3117 public int SendTo(byte[] buffer, int offset, int size, SocketFlags socketFlags, EndPoint remoteEP);
3118 //
3119 // 摘要:
3120 // 向特定远程主机异步发送数据。
3121 //
3122 // 参数:
3123 // e:
3124 // 要用于此异步套接字操作的 System.Net.Sockets.SocketAsyncEventArgs 对象。
3125 //
3126 // 返回结果:
3127 // 如果 I/O 操作挂起,将返回 true。操作完成时,将引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
3128 // 事件。如果 I/O 操作同步完成,将返回 false。在这种情况下,将不会引发 e 参数的 System.Net.Sockets.SocketAsyncEventArgs.Completed
3129 // 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
3130 //
3131 // 异常:
3132 // T:System.ArgumentNullException:
3133 // System.Net.Sockets.SocketAsyncEventArgs.RemoteEndPoint 不能为 null。
3134 //
3135 // T:System.InvalidOperationException:
3136 // 已经在使用 e 参数中指定的 System.Net.Sockets.SocketAsyncEventArgs 对象执行套接字操作。
3137 //
3138 // T:System.NotSupportedException:
3139 // 此方法需要 Windows XP 或更高版本。
3140 //
3141 // T:System.ObjectDisposedException:
3142 // System.Net.Sockets.Socket 已关闭。
3143 //
3144 // T:System.Net.Sockets.SocketException:
3145 // 指定的协议是面向连接的,但 System.Net.Sockets.Socket 尚未连接。
3146 public bool SendToAsync(SocketAsyncEventArgs e);
3147 //
3148 // 摘要:
3149 // 设置套接字的 IP 保护级别。
3150 //
3151 // 参数:
3152 // level:
3153 // 要为此套接字设置的 IP 保护级别。
3154 //
3155 // 异常:
3156 // T:System.ArgumentException:
3157 // level 参数不能为 System.Net.Sockets.IPProtectionLevel.Unspecified。IP 保护级别不能设置为未指定。
3158 //
3159 // T:System.NotSupportedException:
3160 // 套接字的 System.Net.Sockets.AddressFamily 必须为 System.Net.Sockets.AddressFamily.InterNetworkV6
3161 // 或 System.Net.Sockets.AddressFamily.InterNetwork。
3162 public void SetIPProtectionLevel(IPProtectionLevel level);
3163 //
3164 // 摘要:
3165 // 将指定的 System.Net.Sockets.Socket 选项设置为指定值,表示为对象。
3166 //
3167 // 参数:
3168 // optionLevel:
3169 // System.Net.Sockets.SocketOptionLevel 值之一。
3170 //
3171 // optionName:
3172 // System.Net.Sockets.SocketOptionName 值之一。
3173 //
3174 // optionValue:
3175 // 一个 System.Net.Sockets.LingerOption 或 System.Net.Sockets.MulticastOption,它包含该选项的值。
3176 //
3177 // 异常:
3178 // T:System.ArgumentNullException:
3179 // optionValue 为 null。
3180 //
3181 // T:System.Net.Sockets.SocketException:
3182 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3183 //
3184 // T:System.ObjectDisposedException:
3185 // System.Net.Sockets.Socket 已关闭。
3186 public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, object optionValue);
3187 //
3188 // 摘要:
3189 // 将指定的 System.Net.Sockets.Socket 选项设置为指定的值,表示为字节数组。
3190 //
3191 // 参数:
3192 // optionLevel:
3193 // System.Net.Sockets.SocketOptionLevel 值之一。
3194 //
3195 // optionName:
3196 // System.Net.Sockets.SocketOptionName 值之一。
3197 //
3198 // optionValue:
3199 // System.Byte 类型的数组,表示选项值。
3200 //
3201 // 异常:
3202 // T:System.Net.Sockets.SocketException:
3203 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3204 //
3205 // T:System.ObjectDisposedException:
3206 // System.Net.Sockets.Socket 已关闭。
3207 public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, byte[] optionValue);
3208 //
3209 // 摘要:
3210 // 将指定的 System.Net.Sockets.Socket 选项设置为指定的整数值。
3211 //
3212 // 参数:
3213 // optionLevel:
3214 // System.Net.Sockets.SocketOptionLevel 值之一。
3215 //
3216 // optionName:
3217 // System.Net.Sockets.SocketOptionName 值之一。
3218 //
3219 // optionValue:
3220 // 该选项的值。
3221 //
3222 // 异常:
3223 // T:System.Net.Sockets.SocketException:
3224 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3225 //
3226 // T:System.ObjectDisposedException:
3227 // System.Net.Sockets.Socket 已关闭。
3228 public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, int optionValue);
3229 //
3230 // 摘要:
3231 // 将指定的 System.Net.Sockets.Socket 选项设置为指定的 System.Boolean 值。
3232 //
3233 // 参数:
3234 // optionLevel:
3235 // System.Net.Sockets.SocketOptionLevel 值之一。
3236 //
3237 // optionName:
3238 // System.Net.Sockets.SocketOptionName 值之一。
3239 //
3240 // optionValue:
3241 // 选项的值,表示为 System.Boolean。
3242 //
3243 // 异常:
3244 // T:System.ObjectDisposedException:
3245 // System.Net.Sockets.Socket 对象已关闭。
3246 //
3247 // T:System.Net.Sockets.SocketException:
3248 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3249 public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, bool optionValue);
3250 //
3251 // 摘要:
3252 // 禁用某 System.Net.Sockets.Socket 上的发送和接收。
3253 //
3254 // 参数:
3255 // how:
3256 // System.Net.Sockets.SocketShutdown 值之一,它指定不再允许执行的操作。
3257 //
3258 // 异常:
3259 // T:System.Net.Sockets.SocketException:
3260 // 尝试访问套接字时发生错误。有关更多信息,请参见备注部分。
3261 //
3262 // T:System.ObjectDisposedException:
3263 // System.Net.Sockets.Socket 已关闭。
3264 public void Shutdown(SocketShutdown how);
3265 //
3266 // 摘要:
3267 // 释放由 System.Net.Sockets.Socket 使用的非托管资源,并可根据需要释放托管资源。
3268 //
3269 // 参数:
3270 // disposing:
3271 // 如果为 true,则释放托管资源和非托管资源;如果为 false,则仅释放非托管资源。
3272 protected virtual void Dispose(bool disposing);
3273 }
3274 }