我正在将UDP侦听器从Java重构为C.它需要处理每秒1000到10000个UDP消息,平均数据长度大约为60个字节。没有必要的答复。数据不会丢失(不要问为什么选择UDP)。对UDP服务器进行基准测试
我分离了一个处理传入数据的进程,以便我可以尽快收回 - 而不会填满我的内核缓冲区。小孩然后处理收到的数据。
总之,我的算法中是:
监听数据。
收到数据时,检查错误。
把孩子岔开。
如果我是一个孩子,做我的数据并退出。
如果我是父母,收获任何僵尸的孩子waitpid(-1, NULL, WNOHANG)
。
重复。
首先,有关上述的任何意见?我使用socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
创建套接字,与AF_INET
和INADDR_ANY
和recvfrom
绑定,没有标记。其次,任何人都可以建议我可以用来测试这个应用程序(或者至少是侦听器)能够处理比我所期望的更多的消息吗?或者,我需要一起破解一些东西来做到这一点。
我猜想后者会更好,这样我可以比较生成的数据和接收到的数据。但是,意见将不胜感激。