加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 网络编程 Bind()方法

(2013-06-18 15:22:22)
分类: C#

 


public void Bind (
        EndPoint localEP
)

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

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

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

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

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

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

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

异常说明:

ArgumentNullException

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

SocketException

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

ObjectDisposedException

Socket 已关闭。

SecurityException

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

        如果不进行端口绑定,发送数据时端口是随机选择的,尤其是在服务器端,你需要用Bind()方法绑定所指定的端口,使socket与一个本地终结点相连。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有