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

使用一个套接字发送和接收数据

  •  0
  • volody  · 技术社区  · 14 年前

    什么更有意义?

    • 使用一个套接字向嵌入式硬件设备发送和接收数据
    • 使用一个套接字发送数据,使用单独的套接字读取数据

    通信不是很密集,但重要的一点是尽可能快地接收数据。应用程序在WindowsXP和更高版本下工作。

    2 回复  |  直到 14 年前
        1
  •  2
  •   ParmesanCodice    14 年前

    sockets是为双向通信而设计的,因此嵌入式设备的开发人员很可能没有将其系统设计为使用两个socket。

    我有一些使用嵌入式硬件的经验,我见过它们以各种方式工作:

    设备连接到应用程序并通过udp开始数据流
    在这个场景中,我看到最多有三个插座在工作。一个TCP侦听套接字,接受来自嵌入式设备的连接。然后,嵌入式设备通过一些连接参数发送数据,比如它将以多快的速度发送数据。然后,嵌入式设备开始通过upd传输数据。一旦你收到数据,你就会在第二个upd插座上发送一条消息,说“我收到了”。然后设备开始传输下一位数据(再次通过upd)。然后这将无限期地继续下去。我已经看到了一些变化,其中跳过了初始TCP连接,而设备只是不断地传输数据。

    请求/响应
    这里需要多少套接字取决于谁建立了初始连接,因为这将决定谁需要监听套接字。既然你是第一次联系,我就用这个。这是一个更加面向连接的场景。在这里,您连接到设备并请求一些数据,然后设备向您发送对该数据的响应。 在这种情况下,只能使用一个插座。因为设备将响应接收到的套接字上的每个请求。

    所以要回答你的问题“什么更有意义?”,这完全取决于嵌入式设备的设计。如果它在您请求的同一个套接字上响应,那么答案很简单,因为只有一个套接字是可能的。流媒体设备通过 UPD 应该 使用两个插槽提供更好的性能,但前提是您的设备支持它。

    至于问题的第二部分,“尽快接收数据”,这很容易变成异步的。以下是一些关于异步套接字编程的优秀博客:

    如果您使用自定义/第三方协议与设备通信,则读取以下内容也不会出错:

        2
  •  1
  •   Peter    14 年前

    我不是专家,但使用一个插座有什么坏处吗?

    它已经可以发送和接收,我的猜测是,如果你有一个用于读取和发送的插座,你最终会得到更多的开销…