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

UDP套接字的sendto失败处理

udp
  •  1
  • hookenz  · 技术社区  · 16 年前

    如果根据手册页发送到失败

    “成功时,这些调用返回发送的字符数。出现错误时,将返回-1,并正确设置errno。”

    但是,部分发送UDP包对我来说毫无意义,这条评论似乎暗示了这一点。

    如果我用一个UDP包调用send to(或send),如果它实际上不适合出站缓冲区,那么我将得到-1返回,errno设置为EMSGSIZE,没有部分发送作为流(TCP)套接字?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Steve-o    16 年前

    没有隐藏的含义,函数只返回发送的字节数。它是unixapi的标准模式。数据报是全部或无交付,如果网络导致碎片化,则接收更为复杂,但通常堆栈隐藏所有细节,并在重建时显示每个完整的数据包。

        2
  •  1
  •   SimonJ    16 年前

    man sendto ).

    但是,出站缓冲区已满并不一定是原因-Linux(例如)显然默认情况下不会分割UDP数据包(请参见 man udp