Telnet 協定是 TCP/IP 協定族中的一種。它允許使用者(Telnet 用戶端)通過一個協商過程與一個遠端裝置進行通訊。本例將使用一部分 Telnet 協定與伺服器進行通訊。
伺服器的網路庫為了完整展示自己的程式碼實現了完整的收發過程,一般比較傾向於使用傳送任意封包返回原資料的邏輯。這個過程類似於對著大山高喊,大山把你的聲音原樣返回的過程。也就是回音(Echo)。本節使用 Go語言中的 Socket、goroutine 和通道編寫一個簡單的 Telnet 協定的回音伺服器。
回音伺服器的程式碼分為 4 個部分,分別是接受連線、對談處理、Telnet 命令處理和程式入口。
接受連線
回音伺服器能同時服務於多個連線。要接受連線就需要先建立偵聽器,偵聽器需要一個偵聽地址和協定型別。就像你想賣東西,需要先確認賣什麼東西,賣東西的型別就是協定型別,然後需要一個店面,店面位於街區的某個位置,這就是偵聽器的地址。一個伺服器可以開啟多個偵聽器,就像一個街區可以有多個店面。街區上的編號對應的就是地址中的埠號,如下圖所示。
圖:IP和埠號