当前位置:首页 > Windows程序 > 正文

C# Socket 编程

2021-03-29 Windows程序

标识网络地址。这是一个 abstract 类。

命名空间:  System.Net
程序集:  System(在 System.dll 中)

[SerializableAttribute]
public abstract class EndPoint

备注

EndPoint 类提供了一个表示网络资源或服务的 abstract 基类。子类组合网络连接信息以构成服务的连接点。

继承层次结构

System.Object
System.Net.EndPoint
System.Net.IPEndPoint

Socket.Bind 方法

使 Socket与一个本地终结点相关联。

命名空间:  System.Net.Sockets
程序集:  System(在 System.dll 中)

public void Bind(EndPoint localEP ) 参数 localEP   类型:System.Net.EndPoint

要与 Socket关联的本地 EndPoint

 
异常
ArgumentNullException

localEP 为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。

SocketException

试图访问套接字时发生错误。有关更多信息,请参见备注部分。

ObjectDisposedException

Socket已关闭。

SecurityException

调用堆栈上部的调用方无权执行所请求的操作。

备注

如果需要使用特定的本地终结点,请使用 Bind 方法。必须先调用 Bind,然后才能调用 Listen方法。除非需要使用特定的本地终结点,否则不必在使用 Connect方法之前调用 Bind。对无连接和面向连接的协议都可以使用 Bind 方法。

在调用 Bind 之前,必须首先创建打算从其进行数据通信的本地 IPEndPoint。如果您不介意分配哪个本地地址,则可以用 IPAddress.Any作为地址参数创建一个 IPEndPoint,这样,基础服务提供程序将会分配最适合的网络地址。如果您有多个网络接口,这将有助于简化您的应用程序。如果您不介意使用哪个本地端口,则可以创建一个使用 0 作为端口号的 IPEndPoint。在这种情况下,服务提供程序将会分配一个可用的端口号(介于 1024 和 5000 之间)。

如果使用上面的方法,您可以通过调用 LocalEndPoint获知所分配的本地网络地址和端口号。如果当前使用的是面向连接的协议,则直到您调用了 Connect或 EndConnect方法后,LocalEndPoint才会返回本地分配的网络地址。如果当前使用的是无连接协议,则直到完成一个发送或接收操作后,才可访问该信息。

注意:

如果打算接收多路广播的数据报,则必须使用多路广播端口号调用 Bind 方法。

注意:

如果打算通过使用 ReceiveFrom方法来接收无连接的数据报,则必须调用 Bind 方法。

注意:

如果在调用 Bind 方法时接收到 SocketException,则可以使用 SocketException.ErrorCode属性获取特定的错误代码。获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。

注意:

当在应用程序中启用网络跟踪功能后,此成员将输出跟踪信息。有关更多信息,,请参见 网络跟踪。

Socket.Listen 方法

将 Socket置于侦听状态。

命名空间:  System.Net.Sockets
程序集:  System(在 System.dll 中)

public void Listen(
int backlog
) 参数 backlog   类型:System.Int32

挂起连接队列的最大长度。

 

异常
SocketException

试图访问套接字时发生错误。有关更多信息,请参见备注部分。

ObjectDisposedException

Socket已关闭。

备注

Listen 可以让一个面向连接的 Socket侦听传入的连接尝试。backlog 参数指定队列中最多可容纳的等待接受的传入连接数。若要确定可指定的最大连接数,请检索 MaxConnections值。Listen 不会阻止。

如果收到 SocketException,请使用 ErrorCode属性获取特定的错误代码。获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。可使用 AcceptBeginAccept来接受来自队列的连接。

注意:

在调用 Listen 之前,必须首先调用 Bind方法,否则 Listen 将引发 SocketException

注意:

当在应用程序中启用网络跟踪功能后,此成员将输出跟踪信息。有关更多信息,请参见 网络跟踪。

注意:

根据操作系统的不同,backlog 参数被限制为不同的值。您可以指定更大的值,但 backlog 将受操作系统的限制。

Socket.BeginAccept 方法

开始一个异步操作来接受一个传入的连接尝试。

重载列表

BeginAccept(AsyncCallback, Object)
开始一个异步操作来接受一个传入的连接尝试。

BeginAccept(Int32, AsyncCallback, Object)
开始异步操作以接受传入的连接尝试并接收客户端应用程序发送的第一个数据块。

BeginAccept(Socket, Int32, AsyncCallback, Object)
开始异步操作以接受从指定套接字传入的连接尝试并接收客户端应用程序发送的第一个数据块。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69555.html