[英]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協議實現的命令的列表。
您可以將這些命令實現為一組流類。 用戶發出命令,並且您的流類處理標頭構造和插入流中的細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.