在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语言网络编程的信息,请参考官方文档。