答案:用Golang的net包可快速实现TCP服务器。1. 调用net.Listen("tcp", ":8080")监听端口;2. 使用listener.Accept()接收连接并交由goroutine处理;3. 在handleConnection中通过bufio.Scanner读取数据,conn.Write回显消息;4. 完整程序支持多客户端并发,可用telnet测试。注意关闭连接和错误处理。

用Golang实现一个简单的TCP服务器并不复杂,标准库中的 net 包已经提供了完整的支持。通过调用 net.Listen 启动监听,再使用 Accept 接收客户端连接,配合 goroutine 处理并发请求,就能快速搭建一个稳定运行的 TCP 服务。
使用 net.Listen("tcp", ":8080") 可在本地 8080 端口启动 TCP 监听。第一个参数指定协议为 "tcp",第二个是绑定地址,":8080" 表示监听所有网卡的 8080 端口。
listener, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatal("监听失败:", err)
}
defer listener.Close()
log.Println("服务器已启动,监听 :8080...")成功后会返回一个 net.Listener 实例,用于后续接收连接。
通过 listener.Accept() 阻塞等待客户端接入,每次成功会返回一个 *net.Conn 连接对象。每个连接应交给独立的 goroutine 处理,以实现并发。
立即学习“go语言免费学习笔记(深入)”;
处理逻辑示例:for {
conn, err := listener.Accept()
if err != nil {
log.Println("接受连接出错:", err)
continue
}
// 启动协程处理该连接
go handleConnection(conn)
}handleConnection 函数负责与客户端通信。可使用 bufio.Scanner 读取数据,或直接调用 conn.Read/Write。记得在函数结束时关闭连接。
func handleConnection(conn net.Conn) {
defer conn.Close()
log.Printf("新连接来自 %s\n", conn.RemoteAddr())
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
message := scanner.Text()
log.Printf("收到: %s\n", message)
// 回显消息
response := "echo: " + message + "\n"
conn.Write([]byte(response))
}
log.Printf("连接断开: %s\n", conn.RemoteAddr())
}这样就能实现基础的消息回显服务。若客户端发送断开信号,循环会退出,连接自动关闭。
将上述部分组合即可得到完整 TCP 服务器。保存为 main.go 并运行:
go run main.go
使用 telnet 测试:
telnet localhost 8080
输入任意内容,服务器会返回带 "echo:" 前缀的回应。每条消息独立处理,多个 telnet 客户端可同时连接。
基本上就这些。不复杂但容易忽略细节,比如忘记关闭连接或未处理读取错误。保持简洁结构,适合学习网络编程基础。
以上就是Golang如何实现简单的TCP服务器_Golang TCP Server监听与处理方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号