gpt4 book ai didi

c++ - c 套接字以字符串形式发送命令

转载 作者:行者123 更新时间:2023-11-28 08:20:53 25 4
gpt4 key购买 nike

我是 C/C++ 套接字编程的新手。我写了客户端和服务器套接字。他们可以发送和接收字符串。这个想法是将命令发送到字符串中的服务器。它看起来像这样:“GET X”或“SET X 2”。我知道如何拆分字符串。并且程序知道字符串中的第一个单词是命令,第二个是属性,第三个可以是 SET-Command 情况下的值。我的问题是我如何告诉程序,如果它获得字符串“GET X”,它应该调用函数 get(attribute)。我首先想到的是 switch-case,但我认为这不是最佳解决方案。以防万一会有很多命令。谢谢

最佳答案

您基本上可以将问题归结为将操作名称映射到被调用的实际函数的最佳方式,以及是否真的需要具有更好查找特性的解决方案。

  • 对于少量函数,一个简单的基于O(n) 的解决方案(例如线性搜索)就足够了。
  • 基于 O(log(n)) 的方法(例如 self-balancing binary trees )也足以满足更多操作。
  • 大多数人会直接跳转到 hash table基于理论的 O(1) 查找特性的解决方案。然而,这取决于一个好的哈希函数,就成本而言,它本身并不是免费的。

总是涉及时间和空间的权衡。因此,在决定哪种方法最适合您的应用程序之前,最好先进行分析。

无论如何,此类操作调度问题已得到大量研究。例如,这里是 one paper讨论了 CORBA C++ ORB 实现中的操作调度策略。

除了优化操作查找外,您可能还必须处理其他因素,例如:

  • 并发性:您的应用程序是否需要并行处理来自客户端的多个连接?分布式并发通常很难正确实现。
  • 序列化:您将如何通过网络发送和接收数据?您可能遇到的问题包括:发送纯文本可能很慢,数值可能必须转换到接收平台 endianness ,您的序列化协议(protocol)可能会发生变化,这会影响您的用户等。

您还可能需要在客户端处理许多其他问题。如果可能的话,我建议使用现有的类似 RPC 的技术,而不是自己重新发明轮子。

关于c++ - c 套接字以字符串形式发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com