Golang tcp 服务器
以下是一个简单的Golang TCP服务器示例,它接受客户端连接,并将客户端发送的任何消息回送给客户端。
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
}
// 无限循环,等待并处理客户端连接
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
continue
}
go handleConnection(conn)
}
}
// 处理单个客户端的连接
func handleConnection(conn net.Conn) {
defer conn.Close()
// 无限循环,读取客户端发送的数据
for {
buf := make([]byte, 512)
len, err := conn.Read(buf)
if err != nil {
fmt.Println("Error reading:", err.Error())
break
}
// 将读取的数据回送给客户端
conn.Write(buf[:len])
}
}
这个TCP服务器使用了net
标准库中的Listen
和Accept
函数来监听TCP连接。每当有新的连接时,它会创建一个新的goroutine来处理这个连接,goroutine会不断读取客户端发送的数据,并将其原样发送回客户端。如果客户端关闭连接或发生错误,它会关闭与客户端的连接,并结束对应的goroutine。
评论已关闭