【问题标题】:Receiving datagrams using Udp connection使用 Udp 连接接收数据报
【发布时间】:2009-04-04 19:04:16
【问题描述】:

为了通过 UDP 连接接收数据报,我创建了一个 UDPClient 类型的对象。

 receivedNotificationSock = new UdpClient();

但是一旦完成并使用接收方法:

 receivedHostNameBuffer=receivedNotificationSock.Receive(ref receivedNotificationIP);

我收到一个异常,说我必须调用 bind 方法。 但是 UDPClient 类中没有 bind 方法。 如果可能的话,你们能否提供我应该做些什么来克服这个异常的代码。

【问题讨论】:

    标签: udpclient


    【解决方案1】:

    你需要我想知道更多关于套接字的知识。

    所有套接字都有一个端口号。首先,您创建一个套接字——它本身几乎没有用。它只是漂浮在那里。但是然后你绑定它——你给它分配一个端口号。 现在它很有用 - 现在您可以在上面发送和接收数据了。

    请记住,所有 UDP 通信都是由源 IP 和端口以及目标 IP 和端口的四元数据集定义的。新创建的套接字没有 IP 地址或端口;绑定给它一个IP地址和端口。

    很遗憾,我不是 C# 程序员,因此无法正确回答您的问题。但至少你知道为什么这很重要。

    【讨论】:

    • 我在使用 udp 连接时遇到绑定错误...请帮助我解决问题
    【解决方案2】:

    将端口号传递给 UDP 客户端的构造函数。

     receivedNotificationSock = new UdpClient(21000);
    

    您可能需要更改防火墙设置以允许绑定,但当您第一次在开发机器上运行它时通常会打开一个弹出窗口。

    【讨论】:

      【解决方案3】:

      对于 Socket 编程,您需要知道您需要在客户端和服务器端执行的系统调用序列。

      如果你正在编写一个客户端

      1. 您使用socket 调用打开了一个套接字。

      2. 然后您通过connect 调用连接到服务器端口

      3. 一旦连接成功

      4. 然后您使用sendsendtowrite 将请求发送到服务器

      5. 这会导致接收到可以使用receiveread 读取的数据

      在服务器端

      1. 你创建了一个socket

      2. bind 发送到port

      3. 开始使用listen 在套接字上侦听来自各种客户端的传入连接。 还有一种使用select 系统调用来监听连接的非阻塞方式。

      4. 一旦建立连接,您基本上可以读取请求并开始处理它。

      这是一个可能对您有用的 C# 示例。

      http://www.developerfusion.com/article/3918/socket-programming-in-c-part-1/

      【讨论】:

        猜你喜欢
        • 2011-05-13
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多