如何实现网络协议?
这是一个通用问题。我不是在寻找最好的答案,我只是想让你表达你最喜欢的做法。
我想在Java中实现一个网络协议(但这是一个相当普遍的问题,我在C++中遇到了同样的问题),这不是第一次,因为我以前这样做过。但我认为我错过了实现它的好方法。实际上,通常这一切都是关于在主机之间交换文本消息和一些字节缓冲区,存储状态并等待下一条消息出现。问题是,我通常最终会得到一堆开关,并且或多或少复杂的如果语句对不同的状态/消息做出反应。整个事情通常会变得复杂且难以维护。更不用说有时出现的东西有一些“盲点”,我的意思是协议的状态尚未被覆盖并且以不可预测的方式运行。我试图写下一些状态机类,这些类负责以或多或少聪明的方式检查每个操作的开始和结束状态。这使得协议编程非常复杂,因为我必须编写一行又一行的代码来涵盖每种可能的情况。我想要的是一个好的模式,或者一个用于编写复杂协议的最佳实践,易于维护和扩展,并且非常可读。
你有什么建议?