代码之家  ›  专栏  ›  技术社区  ›  Nate

通用套接字UDP编程问题

  •  0
  • Nate  · 技术社区  · 16 年前

    我有一个FPGA设备,我的代码需要与之交谈。协议如下:

    我发送一个非零字节(UDP)来打开一个功能。然后,FPGA板开始在我发送的端口上发送数据。

    你看到我的困境了吗?我知道我发送消息的端口 到 但是我不知道从哪个港口 发送 (此端口通常不是由操作系统自动选择的吗?).

    对于我应该做的事情,我的最佳猜测是用目标IP和端口号创建一个套接字,然后重用该套接字进行接收。如果我这样做,它是否已经设置为在发送原始消息的端口上侦听?

    另外,为了您的信息,此代码的变体将用python和c_编写。我可以查找特定的API,因为它们都遵循BSD套接字模型。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Nikolai Fetissov    16 年前

    这正是 connect(2) 和 getsockname(2) 是为了。作为连接UDP套接字的额外功能,您不必在每次发送时指定目标地址/端口,您将能够发现不可用的目标端口(来自目标的ICMP回复将在下次发送时显示为错误,而不是被丢弃),并且您的操作系统将不必隐式连接和断开UDP套接字n每个发送节省一些周期。

        2
  •  1
  •   Elalfer    16 年前

    你可以 bind 特定端口的套接字,检查 man bind

        3
  •  0
  •   RageZ    16 年前

    你可以 bind 获取所需端口的套接字。

    这样做的唯一问题是,您将无法在计算机上一次运行多个程序实例。

        4
  •  0
  •   futureelite7 Adam Rosenfield    16 年前

    您正在使用UDP发送/接收数据。只需创建一个新的UDP套接字并绑定到所需的接口/端口。然后指示您的FPGA程序将UDP数据包发送回您绑定到的端口。UDP不要求您侦听/设置连接。(仅适用于TCP)

    推荐文章