golang实现同步阻塞、同步非阻塞、异步非阻塞IO模型
2023-12-14 12:09:44
一、同步阻塞IO模型TCP和HTTP示例
同步阻塞IO符合我们的直觉认知,应用程序从TCP连接接收数据缓冲区接受数据,如果没有数据就等待——此处就是阻塞,如果有数据需要把数据从内核空间读取到用户空间——此处就是同步。
在Go语言中进行同步阻塞IO编程TCP交互,可以使用标准库中的net包来实现。以下是一个示例:
package main
import (
"fmt"
"net"
)
func main() {
// 监听TCP端口
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error starting TCP server:", err)
return
}
defer listener.Close()
fmt.Println("TCP server started and listening on port 8080")
for {
// 接受客户端连接
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting client connection:", err)
continue
}
// 处理客户端连接
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
// 读取客户端发送的数据
文章来源:https://blog.csdn.net/yonggeit/article/details/131053458
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!