当前位置: 首页 > 面试题库 >

如何实现网络协议?

强阳曜
2023-03-14
问题内容

这是一个通用的问题。我并不是在寻找最佳答案,而是希望您表达自己喜欢的做法。

我想用Java实现网络协议(但这是一个相当普遍的问题,我在C
++中也遇到了同样的问题),这不是我第一次这样做,这不是第一次。但是我认为我缺少实现它的好方法。实际上,通常所有这些都是关于在主机之间交换文本消息和一些字节缓冲区,存储状态并等待下一条消息到来的。问题是,我通常会遇到很多麻烦,如果if语句对不同的状态/消息做出反应,那么我通常会遇到很多麻烦。整个过程通常变得复杂且难以维护。更不用说有时会出现一些“盲点”,我的意思是协议的状态尚未涵盖,并且行为方式无法预测。我试图写下一些状态机类,可以或多或少地聪明地检查每个动作的开始和结束状态。这使协议的编程变得非常复杂,因为我必须编写几行代码才能涵盖所有可能的情况。我想要的是一种好模式,或一种用于对复杂协议进行编程的最佳实践,易于维护和扩展,并且可读性强。

您有什么建议?


问题答案:

阅读 State 设计模式,了解如何避免使用大量switch语句。

“有时出来的结果有一些“盲点”,我的意思是协议的状态尚未涵盖…”

国家 可以帮助避免差距。它不能保证一个好的设计,您仍然必须这样做。

“ …因为我必须编写一行代码来涵盖所有可能的情况。”

这不应被视为负担或问题:您 必须 编写代码行以涵盖所有可能的情况。

状态 可以提供帮助,因为您可以利用继承。它不能保证一个好的设计,您仍然必须这样做。



 类似资料:
  • This file describes the network protocol used by Ceph. In order to understand the way the structures are defined it is recommended to read the introduction of Network Encoding first. Hello The protoco

  • 两台计算机是怎样进行数据传递的

  • ARP(地址解析协议) 基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的。 当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可;如果在AR

  • 主要内容:RPL协议,CORPL协议,CARP协议,6LoWPAN,6LowPAN安全措施,6LowPAN协议的属性网络层分为两个子层:处理从源到目的地的数据包传输的路由层,以及形成数据包的封装层。 RPL协议 RPL代表低功耗和有损网络的路由协议。它是一种距离矢量协议,支持各种数据链路协议。RPL构建了一个面向目标的有向无环图(DODAG),它只有一个从每个叶节点到根节点的路由。此DODAG中的所有流量都通过根路由。最初,每个节点发送一个DODAG信息对象(DIO),声明它们是自己的根。这些信

  • PyTorch包含创建和实现神经网络的特殊功能。在本章中,我们将创建一个简单的神经网络,实现一个隐藏层开发单个输出单元。 我们将使用以下步骤使用PyTorch实现第一个神经网络 - 第1步 首先,需要使用以下命令导入PyTorch库 - 第2步 定义所有图层和批量大小以开始执行神经网络,如下所示 - 第3步 由于神经网络包含输入数据的组合以获得相应的输出数据,使用以下给出的相同程序 - 第4步 借

  • git 提供相当灵活的协作方式,最常见的方式为:协作者获得原始版本库的镜像,并在上面工作;发起者从协作者那里获取更新 协作者通过git clone创建一个镜像版本库: git clone user@url:~/path [local] 网络对于 git 来说是透明的,凡是可以访问的位置,如 http、ftp、ssh……,甚至本地路径,对于 git 来说没有什么区别。 通过以下命令,创建一个本机原