在Go语言中,可以使用goroutine和channel来实现异步的服务器。下面是一个简单的示例代码:
package main
import (
"fmt"
"net"
)
func handleRequest(conn net.Conn) {
buffer := make([]byte, 1024)
_, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
response := "Hello, client!"
conn.Write([]byte(response))
conn.Close()
}
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Server started. Listening on :8080")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting connection:", err.Error())
return
}
go handleRequest(conn) // 使用goroutine处理每个连接,使其异步执行
}
}
上述代码创建了一个TCP服务器,监听本地的8080端口。当有客户端连接时,会启动一个goroutine去处理该连接,并在处理完成后关闭连接。这样可以保持主程序继续接受其他连接。
请注意,在真实场景中可能需要添加更多的错误处理、协议解析、并发控制等功能。以上仅为简单示例,供参考。
内容由零声教学AI助手提供,问题来源于学员提问




