V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drzhaug
V2EX  ›  程序员

go 实现了一个简洁的 TCP 通信框架

  •  
  •   drzhaug · 2017-08-07 05:16:46 +08:00 · 5937 次点击
    这是一个创建于 2661 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 目前待业中,想找一个 go 的工作,所以做一些练习, 各位大神请不吝赐教。(小弟能厚脸皮求个 star 吗。。有一两个就好,想写到简历中。。)
    • 这个 skeleton 的实现是针对普通的通信逻辑:客户端发送->服务端接收->数据处理->返回响应数据->客户端收到响应数据
    • 自己定义了一个简单协议,并有 crc 验证,目前还没做加密处理。。
    • 最大特点:使用方式很简单,引入 go 包,三步实现服务端数据处理逻辑,三部实现客户端数据包发送逻辑
    • readme 中写有详细使用方法

    git 地址: https://github.com/by-zhang/stpro 谢谢各位了,希望提出建议。

    16 条回复    2018-04-03 19:15:01 +08:00
    wangshichang
        1
    wangshichang  
       2017-08-07 09:16:19 +08:00
    楼主给你个 star,最近也正在学 Go,希望能学到些东西<( ̄ 3  ̄)>
    Xrong
        3
    Xrong  
       2017-08-07 10:45:32 +08:00
    给个 star 楼主加油。。。
    a308057848
        4
    a308057848  
       2017-08-07 10:54:00 +08:00
    在杭州吗
    drzhaug
        5
    drzhaug  
    OP
       2017-08-07 11:52:14 +08:00
    @a308057848 beijing
    drzhaug
        6
    drzhaug  
    OP
       2017-08-07 11:52:35 +08:00
    @Xrong 多谢~
    drzhaug
        7
    drzhaug  
    OP
       2017-08-07 11:52:54 +08:00
    @wangshichang 感谢
    0x8C
        8
    0x8C  
       2017-08-07 11:55:42 +08:00
    reflect 涉及到内存分配,大量的枚举,开销大,速度慢,慎用
    drzhaug
        9
    drzhaug  
    OP
       2017-08-07 12:00:46 +08:00
    @0x8C 哦哦 多谢提醒 我确实不知道像我实现的这种方式可以用什么策略更好 所以才选用了 reflect。。
    fhefh
        10
    fhefh  
       2017-08-07 14:14:16 +08:00
    已 start
    多谢楼主 最近也在学习 go 在
    pqee
        11
    pqee  
       2017-08-07 14:16:23 +08:00
    楼主给力
    bobuick
        12
    bobuick  
       2017-08-07 14:25:56 +08:00
    加 crc 作甚。tcp 是干吗的。

    想练手的话,把 pb 看下,照着它做自己的 proto 好了, 就是一大堆 binary 操作。把对应类型的 marshal 和 unmarshal 弄出来。
    另外再弄个 memory buffer pool,减少连接反复创建时的 new 开销。
    增加一个应用层 keepalive
    drzhaug
        13
    drzhaug  
    OP
       2017-08-07 14:42:53 +08:00
    @bobuick 我封的协议是"面向业务"的那种,可能跟你所说的协议不是一回事。至于传输的二进制数据当然可以选用 pb,也可以选用 json。相当于在 pb 外封装了一层。不过连接池是应该学习下。。。多谢指导
    Presageee
        14
    Presageee  
       2017-08-07 15:42:08 +08:00
    搭个车,基于 netty 的通信计算框架,https://github.com/Presageee/DNCF
    tempdban
        15
    tempdban  
       2017-08-08 01:52:51 +08:00 via Android
    golang 何时原生支持 fork 才用
    itfanr
        16
    itfanr  
       2018-04-03 19:15:01 +08:00
    @bobuick 多谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.