V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Zeffee
V2EX  ›  Go 编程语言

Golang 写一个简易版多人聊天室,望指点

  •  
  •   Zeffee · 2016-04-25 17:04:14 +08:00 · 1344 次点击
    这是一个创建于 2924 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.新手一枚,用空余时间写了个简易的多人聊天程序。写完但不知代码质量如何,望大牛们能指点下可改进的地方。

    附上地址: https://github.com/sostuts/Chat

    2.另外,请教下 tcp 接收信息的时候,除了 length,_:= net.Conn.Read() 可以获取到信息长度,还有其他方法吗?

    7 条回复    2016-05-08 19:38:53 +08:00
    chzyer
        1
    chzyer  
       2016-04-25 22:25:34 +08:00
    最常见都是通过 length + payload 来做协议的,而且 Write() 一次有可能需要多次 Read() 才能读完,所以一般的接收端代码是这样的

    var length int32
    binary.Read(conn, binary.Bigdian, &length)
    payload := make([]byte, int(length))
    io.ReadFull(conn, payload)
    Zeffee
        2
    Zeffee  
    OP
       2016-04-25 22:29:35 +08:00 via Android
    没人回😳
    Zeffee
        3
    Zeffee  
    OP
       2016-04-25 22:32:09 +08:00 via Android
    @chzyer 我回去试下, thx👌
    susanDao
        4
    susanDao  
       2016-04-26 09:15:35 +08:00
    刚上手 go ,学习之。。
    Zeffee
        5
    Zeffee  
    OP
       2016-04-26 20:46:02 +08:00
    @susanDao 我也是接触 Go 差不多两周时间,,感觉 Go 还是挺不错的
    oreo
        6
    oreo  
       2016-05-07 16:19:27 +08:00
    可以,正好没东西.
    Zeffee
        7
    Zeffee  
    OP
       2016-05-08 19:38:53 +08:00 via Android
    @oreo ???
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   879 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:06 · PVG 05:06 · LAX 14:06 · JFK 17:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.