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

}

}

相关推荐
艾莉丝努力练剑4 分钟前
【Linux网络】Linux 网络编程:应用层自定义协议与序列化(2)序列化与反序列化
linux·运维·服务器·c++·网络协议·序列化
XiYang-DING9 分钟前
【Java EE】Cookie
服务器·前端·java-ee
天问一9 分钟前
bat文件切换电脑ip
服务器·网络·tcp/ip
kaoa0009 分钟前
Linux入门攻坚——76、虚拟化技术基础原理-1
linux·运维·服务器
yyuuuzz12 分钟前
企业出海aws运维常见问题梳理
运维·服务器·网络·数据库·aws
Bat U21 分钟前
JavaEE|网络编程
运维·服务器·网络
怀旧,35 分钟前
【Linux系统编程】23. 线程同步与互斥(下)
linux·运维·服务器
西贝爱学习37 分钟前
pdf转TXT文本,适用于文字型PDF;扫描版PDF需要使用OCR(光学字符识别)技术来识别图中的文字
java·服务器·前端
偶尔上线经常挺尸38 分钟前
《每日一命令18:iptables——Linux防火墙入门》
linux·运维·服务器·iptables·防火墙
原来是猿1 小时前
网络计算器:理解序列化与反序列化(上)
linux·运维·服务器·网络·tcp/ip