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

执行UDP套接字。接收开始收集还是可用?

  •  0
  • alsaleem  · 技术社区  · 8 年前

    我有一个线程(在android-Wifi上)来接收每40毫秒发送的UDP数据包流。捕获数据包后,线程将处理数据,并在40ms内返回接收。

    网络层是否仅在调用套接字后才接受UDP数据包。接收或存储数据包(在缓冲区内),直到套接字。收到索赔吗? (我知道缓冲区有大小,会删除旧的缓冲区)(我也知道如果没有可用的缓冲区,它会等待)

    换句话说,我是否需要使用双接收线程?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jeremy Friesner    8 年前

    网络层是否仅在调用 插座接收或存储数据包(在缓冲区内),直到 插座收到索赔吗?

    是后者。每个UDP套接字都有一个传入数据缓冲区,一旦将UDP套接字绑定到端口,网络堆栈接收到的任何UDP数据包都将被放入该缓冲区(假设缓冲区中仍有足够的可用空间来容纳数据包)。无论应用程序是否调用,收到的数据包都将添加到缓冲区 recv()

    使命感 recv() 只会导致将缓冲区中最旧的UDP数据包移出缓冲区并移动到传递给的数组中 recv()