基于tcp通信,客户端及服务器端收发数据( go语言)
以下是一个简单的Go语言程序,演示了如何使用TCP协议在客户端和服务器端之间收发数据。
服务器端代码 (server.go
):
package main
import (
"fmt"
"net"
)
func main() {
// 监听TCP端口 8080
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Listening on localhost:8080...")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
continue
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
defer conn.Close()
// 读取客户端发送的数据
buffer := make([]byte, 512)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Println("Received data:", string(buffer[:n]))
// 发送数据回客户端
_, err = conn.Write([]byte("Hello, client!"))
if err != nil {
fmt.Println("Error writing:", err.Error())
return
}
}
客户端代码 (client.go
):
package main
import (
"fmt"
"net"
"os"
)
func main() {
// 连接到服务器
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println("Error dialing:", err.Error())
os.Exit(1)
}
defer conn.Close()
// 发送数据到服务器
_, err = conn.Write([]byte("Hello, server!"))
if err != nil {
fmt.Println("Error writing:", err.Error())
os.Exit(1)
}
// 读取服务器响应的数据
response := make([]byte, 512)
n, err := conn.Read(response)
if err != nil {
fmt.Println("Error reading:", err.Error())
os.Exit(1)
}
fmt.Println("Response:", string(response[:n]))
}
在运行这些程序之前,请确保您的服务器端程序 (server.go
) 正在运行。然后,运行客户端程序 (client.go
),您应该会在服务器端看到打印出的接收到的数据,并且客户端也会收到服务器的响应。
评论已关闭