安裝Golang
通過APT安裝:
sudo apt update && sudo apt install golang-go
驗證安裝:go version
。
設置環境變量(可選)
編輯~/.bashrc
,添加:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
生效配置:source ~/.bashrc
。
編寫網絡程序
package main
import (
"bufio"
"fmt"
"net"
)
func handleConnection(conn net.Conn) {
defer conn.Close()
reader := bufio.NewReader(conn)
for {
message, err := reader.ReadString('\n')
if err != nil {
fmt.Println("讀取錯誤:", err)
return
}
fmt.Println("收到消息:", message)
conn.Write([]byte("服務器回復: " + message))
}
}
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
defer listener.Close()
fmt.Println("服務器監聽8080端口...")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("接受連接錯誤:", err)
continue
}
go handleConnection(conn) // 并發處理
}
}
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
panic(err)
}
defer conn.Close()
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Print("輸入消息: ")
if !scanner.Scan() {
break
}
text := scanner.Text()
conn.Write([]byte(text + "\n"))
reply, _ := bufio.NewReader(conn).ReadString('\n')
fmt.Println("服務器回復:", reply)
}
}
```。
運行與測試
go run server.go
。telnet
:telnet localhost 8080
。進階方向
net/http
包構建Web服務,支持HTTP/2。net.ListenUDP
實現無連接通信。net
包函數返回的錯誤,避免程序因異常退出。conn.SetDeadline
),防止阻塞。defer
語句)。參考資料:[1,2,3,7,8,10,12,13,14]