golang 有什么 TCP 框架?

2021-08-17 22:58:27 +08:00
 zyxk
可以管理连接, 心跳包 处理粘包等,
web 方面的很多, tcp 的没找到,大家做 TCP 都用什么呢?
13777 次点击
所在节点    Go 编程语言
118 条回复
Trim21
2021-08-18 04:20:32 +08:00
粘包警察虽迟但到
allenby
2021-08-18 04:35:42 +08:00
TCP 哪来的粘包,建议重修网络原理 +1
Microkernel
2021-08-18 06:07:26 +08:00
@SingeeKing 粘包警察又抓获一名自投罗网的
Keyes
2021-08-18 08:14:35 +08:00
catcn
2021-08-18 08:26:11 +08:00
leonme
2021-08-18 08:33:43 +08:00
流 流 流,说三遍
ICKelin
2021-08-18 08:36:10 +08:00
golang 用 net 库处理不是很麻烦吧。
chendy
2021-08-18 08:38:47 +08:00
除非 rpc 不满足需求否则就用 rpc 就好
balabalaguguji
2021-08-18 08:42:22 +08:00
@leonme
@allenby
@dcoder
@hahasong

你们是没用过 TCP 吧,就是因为流,才需要处理粘包、分包问题,不懂不要乱喷,好好补补知识
qwerthhusn
2021-08-18 08:44:51 +08:00
TCP/UDP 是在第三层( TCP/IP 协议栈不是 OSI )

HTTP 是在 TCP 上面的套娃,在第四层(例外:HTTP/3 是在 UDP 上面的套娃)

你说的那些常见 RPC 协议,要么是跟 HTTP 一样直接在 TCP/UDP 的上面。要么像 GRPC 那样直接在 HTTP 上面再套

你甚至可以把 HTTP 当成一种 RPC 都没问题。

所以没有必要自己基于 TCP 自创一个 RPC 协议,直接用现成成熟的就行了,像 Thrift,gRPC 这种。

不过我建议是最最最最最简单的 HTTP 一把梭。

如果你非要自己实现,可以使用像 go-netty 或者 getty 的这种,自己定义好 codec,然后框架会帮你处理所谓的“粘包半包”问题。
BBCCBB
2021-08-18 08:45:56 +08:00
gotty
gnet

类似 netty 的框架.
llbgurs
2021-08-18 08:50:11 +08:00
@balabalaguguji 不懂 TCP 才会说粘包
chenshun00
2021-08-18 08:58:41 +08:00
一群人不知道抓住个概念争论个什么,真的把 TCP 学明白了,用什么词汇都可以把这东西给人描述明白。粘拆又何妨,反正应用层能拿到完成的业务 package 。
dacapoday
2021-08-18 08:59:16 +08:00
这么多年,就一直没搞懂这些说粘包的。难道你们协议头里没有 magic code, 没有数据包 length?
mritd
2021-08-18 09:01:00 +08:00
drpc
yufpga
2021-08-18 09:01:50 +08:00
evio, gnet, netpoll
hasdream
2021-08-18 09:02:47 +08:00
https://pkg.go.dev/net 这个包? 类似 其他语言 socket api
raptor
2021-08-18 09:17:39 +08:00
粘包警察的工作不到位啊,都批了这么久了,还有人以为存在“粘包”这种伪概念……

你们以为的“粘包”是 TCP 的 feature,不懂说明你没学好

你们会碰到“粘包”是因为你们在 TCP 之上定义的协议有问题,说明定义这个协议的人没学好
yolee599
2021-08-18 09:20:29 +08:00
@balabalaguguji 正是因为流协议所以才没有“粘包”的说法,TCP 就像一条水管,数据是源源不断流过去的,特性就是这样。TCP 会导致“粘包”这个说法是不对的,TCP 和粘包不存在因果关系
lanlanye
2021-08-18 09:20:39 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/796420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX