【问题标题】:Using asynchronous sockets for server handling multiple clients使用异步套接字为服务器处理多个客户端
【发布时间】:2013-04-19 10:42:40
【问题描述】:

我使用多线程开发了一个单服务器多客户端 udp 应用程序。我现在想切换到单处理器系统,所以多线程将不再帮助我:(

现在我想使用异步套接字实现服务器,这样它就可以同时处理多个客户端。

这种方法行得通吗?如果您想使用一台服务器处理多个客户端,那么使用异步套接字是否正确? 使用异步套接字比使用线程处理多个客户端更好吗?

【问题讨论】:

    标签: c windows sockets network-programming udp


    【解决方案1】:

    我建议你看看 libevent:http://www.libevent.org/ 它提供了所有必要的功能来组织异步服务器。

    【讨论】:

    • 这是正确的。如果您需要,还有许多其他库可以做很多相同的事情:ZeroMq、RabbitMq、Boost.asio 等。这些都表明它们占用的 CPU 很少,可以同时处理数千个连接。
    【解决方案2】:

    您可以对服务器进行多线程处理,也可以使其异步。除非您有 LOT (100s/1000s) 的连接,否则您可能不会注意到任何多路复用连接的方法的性能差异。对于少量连接,选择/轮询、线程、aio 都将执行大致相同的操作。但是,aio 更难实现。

    【讨论】:

    • 可能。我认为让你的头脑和设计更难,但这是个人意见。除非你需要支持大量的连接(或者你只是对技术感兴趣),否则我会选择你觉得最舒服的方法;性能不太可能成为问题,而复杂的设计、错误、上市时间和维护更有可能成为问题!
    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多