我有一个用 Java 实现的聊天程序。客户端可以向服务器发送许多不同类型的信息(即,加入服务器并发送用户名、密码;请求与服务器上的另一个用户进行私人聊天,断开与服务器的连接等)。
我正在寻找正确的方法让服务器/客户端区分“文本”消息,这些消息只是从一个客户端发送给其他客户端的聊天文本消息,以及“命令”消息(断开连接、请求私人聊天、请求用于服务器或客户端的文件传输等)。
我看到两个选项:
- 使用序列化对象,并通过执行“instanceof”来确定它们在接收端是什么
- 将数据作为字节数组发送,保留数组的前 N 个字节以指定传入数据的“类型”。
这样做的“正确”方法是什么?真正的协议(oscar,irc)如何处理这种情况?
我在这个主题上搜索了一下,只找到了以简单的 Java 聊天应用程序为中心的示例/讨论。没有详细介绍协议设计(我最终打算实践)。
感谢任何帮助...