在Debian系統中,使用Go語言進行網絡編程主要依賴于Go標準庫中的"net"包。以下是一個簡單的示例,展示了如何使用Go語言在Debian系統中實現一個TCP服務器和客戶端。
首先,確保你已經安裝了Go語言。如果沒有,請訪問Go官方網站下載并安裝。
創建一個新的目錄,例如go-network-programming,并在其中創建兩個文件:server.go和client.go。
在server.go文件中,編寫一個簡單的TCP服務器:
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
port := ":8080"
listener, err := net.Listen("tcp", port)
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
defer listener.Close()
fmt.Println("Listening on", port)
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
os.Exit(1)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
defer conn.Close()
reader := bufio.NewReader(conn)
message, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Print("Message received: ", string(message))
conn.Write([]byte("Message received\n"))
}
client.go文件中,編寫一個簡單的TCP客戶端:package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
serverAddress := "localhost:8080"
conn, err := net.Dial("tcp", serverAddress)
if err != nil {
fmt.Println("Error connecting:", err.Error())
os.Exit(1)
}
defer conn.Close()
fmt.Println("Connected to", serverAddress)
go func() {
reader := bufio.NewReader(conn)
for {
message, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Print("Message received from server: ", string(message))
}
}()
reader := bufio.NewReader(os.Stdin)
for {
fmt.Print("Enter message: ")
message, _ := reader.ReadString('\n')
_, err := conn.Write([]byte(message))
if err != nil {
fmt.Println("Error sending:", err.Error())
return
}
}
}
go-network-programming目錄,并分別運行服務器和客戶端:go run server.go
在另一個終端窗口中:
go run client.go
現在,你可以在客戶端輸入消息,服務器將接收并回復這些消息。
這只是一個簡單的示例,你可以根據需要擴展此代碼以支持其他網絡協議(如UDP)或實現更復雜的功能。更多關于Go語言網絡編程的信息,請參考官方文檔。