go实现TCP服务器

package main

import (

"fmt"

"net"

)

func main() {

// 监听TCP端口

listener, err := net.Listen("tcp", "localhost:50000")

if err != nil {

fmt.Println("Error listening:", err.Error())

return

}

defer listener.Close()

fmt.Println("Listening on localhost:50000...")

// 无限循环等待并处理连接

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()

// 读取客户端发送的数据

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!\n"))

if err != nil {

fmt.Println("Error writing:", err.Error())

return

}

}

相关推荐
夏玉林的学习之路9 小时前
如何远程连接服务器
运维·服务器
影寂ldy10 小时前
C# try-catch 异常处理全套笔记
服务器·数据库·c#
fei_sun11 小时前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
huainingning13 小时前
华三ACL单向TCP互通组网-通过Established状态回包实现
运维·网络·tcp/ip
researcher-Jiang13 小时前
高性能计算之MPI:第一次MPI并行程序设计练习
linux·运维·服务器
normanhere15 小时前
浪潮云国产化超融合规划和部署案例
服务器·网络
被摘下的星星16 小时前
Go的命名规则
golang
CCPC不拿奖不改名16 小时前
Redis 工程化部署深度解析
linux·服务器·数据库·redis·深度学习·缓存·rag
QWEDDRFTG16 小时前
运维长期经验总结:从故障倒推服务器电源线选购标准
运维·服务器