当前位置:  开发笔记 > 开发工具 > 正文

通过同一台机器上的UDP套接字发送数据是否可靠?

如何解决《通过同一台机器上的UDP套接字发送数据是否可靠?》经验,为你挑选了3个好方法。

如果我使用UDP套接字进行进程间通信,我可以期望其他进程以相同的顺序接收所有发送数据吗?

我知道UDP通常不是这样.



1> Brian Agnew..:

不,我以前一直被这个咬过.您可能想知道它可能会如何失败,但是您将遇到挂起的数据包缓冲区问题,因此数据包将被丢弃.网络子系统如何丢弃数据包取决于实现,而不是在任何地方指定.



2> Alex M..:

简而言之,没有.您不应该对UDP套接字上收到的数据顺序做任何假设,即使是在localhost上也是如此.它可能会起作用,也可能不起作用,并且不能保证.



3> ConcernedOfT..:

不,即使使用本地插座,也没有这样的保证.如果您想要一个IPC机制来保证按顺序交付,您可能会考虑使用全双工管道popen().这将打开子进程的管道,可以任意读取或写入.它将保证按顺序交付,并可与同步或异步I/O(select()poll())一起使用,具体取决于您希望如何构建应用程序.

在unix上还有其他选项,例如unix域套接字或System V消息队列(其中一些可能更快)但是从管道读取/写入非常简单且有效.作为奖励,它很容易测试您的服务器进程,因为它只是从Stdio读取和写入.

在Windows上你可以查看命名管道,它的工作方式与它们的unix同名有些不同,但它们恰好用于这种进程间通信.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有