簡體   English   中英

如何識別網絡應用程序的多個命令(Java)

[英]How could I identify multiple commands for network application (Java)

我想構建一些實踐的客戶端服務器應用程序。 我從一個簡單的聊天開始,這並不難。 我還可以通過簡單地分割一個字符串來識別不同的命令,例如“ command:msg”。 但是我認為這可能有點不便。 所以我想知道是否有更好的方法來實現這一目標。 我偶然發現了這一面: http : //www.javaworld.com/jw-01-1997/jw-01-chat.html? page = 6最后,它說:

但是,另一種更優雅的解決方案是在一組流類后面抽象協議。 標頭構造和插入的細節可以由流類自動處理,然后為客戶端提供與以前幾乎相同的接口:客戶端將消息寫入流,但不刷新流,而是調用附加的方法適當的標頭並發送封裝的消息。

我真的不知道那是什么意思。 有人可以解釋一下,或者甚至更好,給我一個代碼示例。 也許還有其他方法可以做?

假設您要發送封裝為發送鏈接的消息:

| ID | len | 郵件內容|。

它們“在一組流類背后抽象協議”的意思是創建擴展流類的類,這些類將為您封裝的消息上正確的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));
    }

}

這是一個相當成功的聊天網絡用於協議的功能。

互聯網中繼聊天

這是使用IRC協議實現的命令的列表。

Internet中繼聊天命令列表

您可以將這些命令實現為一組流類。 用戶發出命令,並且您的流類處理標頭構造和插入流中的細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM