安装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]