2

我想为一些实践构建一个客户端-服务器-应用程序。我从一个简单的聊天开始,这并不难。我还可以通过简单地拆分字符串来识别不同的命令,例如“command:msg”。但我认为这可能有点不方便。所以我想知道是否有更好的方法来实现这一点。我偶然发现了那一面: http ://www.javaworld.com/jw-01-1997/jw-01-chat.html?page= 6 最后它说:

然而,另一种更优雅的解决方案是在一组流类后面抽象协议。头构造和插入的细节可以由流类自动处理,然后客户端留下与以前大致相同的接口:客户端将消息写入流,但不是刷新流,而是调用附加的方法适当的标头并发送封装的消息。

我真的不知道那是什么意思。有人可以解释一下,或者更好的是,给我一个代码示例。也许还有其他方法可以做?

4

2 回答 2

1

假设您要发送封装为您发送的链接的消息:

| 身份证 | 伦 | 留言内容|。

他们所说的“抽象一组流类背后的协议”的意思是创建扩展流类的类,这些类将为您在封装的消息上放置正确的 ID 和长度。

例如,对于您发送两种消息的扩展 PrintWriter:

ID 1 - 正常消息。

ID 2 - 错误消息。

class MyProtocolPrintWriter extends PrintWriter {

    public static final int NORMAL_MESSAGE = 1;
    public static final int ERROR_MESSAGE = 2;

    //put the constructor

    public void writeMessage(String message) {
        println(
            String.format(
            "%02x%02d%s", NORMAL_MESSAGE, message.length(), message));
    }

    public void writeErrorMessage(String message) {
        println(
            String.format(
            "%02x%02d%s", ERROR_MESSAGE, message.length(), message));
    }

}
于 2013-03-07T17:25:35.320 回答
0

这是一个相当成功的聊天网络用于协议的内容。

互联网中继聊天

这是使用 IRC 协议实现的命令的列表。

互联网中继聊天命令列表

您可以将这些命令实现为一组流类。用户发出命令,您的流类处理标头构造和插入流的细节。

于 2013-03-07T17:13:11.080 回答