当前位置: 首页 > news >正文

使用go实现一个简单的聊天服务器

使用go实现一个简单的聊天服务器,对于客户端发送的消息,服务端添加时间戳和冒号后返回客户端。

1. 代码


import ("bufio""fmt""net""strings""time"
)func handleConnection(conn net.Conn) {defer conn.Close()fmt.Println("Client connected:", conn.RemoteAddr())reader := bufio.NewReader(conn)for {// 读取客户端消息message, err := reader.ReadString('\n')if err != nil {fmt.Println("Client disconnected:", conn.RemoteAddr())return}// 添加时间戳timestamp := time.Now().Format("2006-01-02 15:04:05")response := fmt.Sprintf("%s: %s", timestamp, strings.TrimSpace(message))// 返回处理后的消息conn.Write([]byte(response + "\n"))}
}func main() {// 监听 TCP 连接ln, err := net.Listen("tcp", ":8090")if err != nil {fmt.Println("Error listening:", err)return}defer ln.Close()fmt.Println("Server started on :8090")for {// 接受客户端连接conn, err := ln.Accept()if err != nil {fmt.Println("Error accepting connection:", err)continue}// 处理客户端连接go handleConnection(conn)}
}

2. 导出二进制包

# 打包x86部署包GOARCH=amd64 GOOS=linux go build -o gochat  main.go# 打包arm部署包GOARCH=arm64 GOOS=linux go build -o gochat main.go

3. 构建成镜像

Dockerfile:

# Build the stellaris-core binary
FROM alpine:3.11WORKDIR /workspace# Copy the go source
COPY gochat /gochat# Build
ENTRYPOINT ["/gochat"]

build.sh:

docker build -t gochat:v1 . -f Dockerfile

start.sh

docker run --name gochat  -d -p 8090:8090  docker.io/library/gochat:v1

4. 使用telnet测试

telnet localhost 8089send hello


http://www.mrgr.cn/news/823.html

相关文章:

  • 白骑士的C#教学实战项目篇 4.4 游戏开发
  • 优化大量数据导出到Excel的内存消耗(二):如果数据超出Excel单表上限,则进行分表
  • 前端面试题(二十五)|附赠完整面试流程
  • Python爬虫使用实例
  • Python 文件目录操作,以及json.dump() 和 json.load()
  • 安全自动化和编排:如何使用自动化工具和编排技术来提高安全操作效率。(第一篇)
  • k8s配置资源管理
  • 大学生科创项目在线管理系统的设计与实现
  • 宠物空气净化器推荐买吗?清除浮毛的效果好吗
  • LMDeploy 部署 VLMs 的方法与探讨
  • SuccBI+低代码文档中心 —数据管理
  • 基于web的人力资源管理系统的设计与实现
  • mybatisplus多数据源中关于不同类型的(mysql,oracle)数据库分页问题解决
  • 关于DNS的配置实验
  • 人工智能-自然语言处理(NLP)
  • 【Canvas与艺术】绘制黄色三角三箭头循环标志
  • 加密创投周期进化论:未来或黯淡,但流动性是那道光
  • BIO,NIO,AIO编程实战
  • 数学建模算法总结
  • 深度学习--参数报错问题