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

}

}

相关推荐
筱白爱学习2 小时前
RestHighLevelClient详细使用手册
linux·服务器·php
石油人单挑所有2 小时前
ProtoBuf编写网络版本通讯录时遇到问题及解决方案
运维·服务器
Andy3 小时前
分流设备的测试报告
运维·服务器
枷锁—sha4 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 045】详解:Ret2Libc 之 32位动态泄露(补充本地 Libc 手动加载指南)
服务器·网络·网络安全·系统安全
xdpcxq10294 小时前
EF Core实体追踪Entry中记录的数据
服务器·数据库·oracle
Norach5 小时前
ubuntu22.04安装ssh-server与realvnc-server
linux·服务器·经验分享·ubuntu·ssh·vnc
UP_Continue5 小时前
Linux--进程间通信
linux·运维·服务器
qinaoaini5 小时前
[golang][MAC]Go环境搭建+VsCode配置
vscode·macos·golang
花酒锄作田6 小时前
Go - slog使用入门
golang
u***35746 小时前
对基因列表中批量的基因进行GO和KEGG注释
开发语言·数据库·golang