golang 有什么 TCP 框架?

2021-08-17 22:58:27 +08:00
 zyxk
可以管理连接, 心跳包 处理粘包等,
web 方面的很多, tcp 的没找到,大家做 TCP 都用什么呢?
13824 次点击
所在节点    Go 编程语言
118 条回复
youngce
2021-08-18 09:24:13 +08:00
gnet
balabalaguguji
2021-08-18 09:29:54 +08:00
@yolee599 #39 有点扣字眼了,当然不是说流粘,说的是你发的消息变成流传输,你的多个消息粘在一起了。
Cbdy
2021-08-18 09:30:18 +08:00
“粘包”还行
zdt3476
2021-08-18 09:42:20 +08:00
server
2021-08-18 09:42:24 +08:00
gnet
dreamage
2021-08-18 09:57:14 +08:00
建议 #17 #18 打一架
nmap
2021-08-18 10:06:23 +08:00
短短几句话就暴露了小白一个,很幼稚
leonme
2021-08-18 10:06:35 +08:00
@balabalaguguji 这……算了,你继续粘包吧,培训班害死人
ylsc633
2021-08-18 10:14:31 +08:00
看了评论我想学习学习(我只会 curd)

可是 你们谁也不说个原理

一方: TCP 有粘包
一方: TCP 没有粘包

那你们倒是说说啊...
sunny352787
2021-08-18 10:20:33 +08:00
用 RPC 或者 websocket 吧,除了游戏已经很少看到跑裸 TCP 的了
KickAssTonight
2021-08-18 10:23:10 +08:00
abersheeran
2021-08-18 10:25:54 +08:00
@ylsc633 TCP 本就是流协议,没有包的概念。如果需要划分包,一定是要在上层协议里设计长度标识位来划分包和包之间的隔离线。例如 HTTP 里的 Content-Length,Socks 里的 domain-length 等等。

举个现实里的例子:TCP 协议就是一根水管,你拿着许多瓶矿泉水往管子对面输水,对你来说,水是一瓶瓶的,之间的区别很明显。但对于那边的人来说他只能收到一波又一波的水,至于这些水是属于哪一瓶的,他不知道。如果运气好,每一波水之间间隔也会很明显,但是这并不代表水管帮你把这些水分割了。运气不好的时候,水就连在一起下来了,这就是他们嘴里说的粘包。
402159806
2021-08-18 10:30:03 +08:00
@ylsc633 TCP 本身协议不存在粘包说法, 数据传输中的粘包是自定协议没有定义好
ming159
2021-08-18 10:32:29 +08:00
假设有一个数据源,源源不断的产生数据,需要通过 TCP 传输,同时,这些数据是一段一段的;
假设以#开头,以$结束. 比如 #abc123$ 为一段完整数据.
应用层代码接收到数据时,就会出现如下三种情况:
1. 刚好收到完整的数据: #abc123$
2. 分为了 2 次收到完整数据: 第一次: #abc ; 第二次: 123$
3. 1 次收到数据,多于一段完整数据: #abc123$#ab

请问你的代码如何处理以上三种情况?
onData("#abc");
onData("123$");
onData("#edf456$#hj");
onData("k789$");
最后希望得到的是

#abc123$
#edf456$
#hjk789$


private String cache="";

public void onData(String data){
// 请把这里补充完整,就理解了.
}
jlkm2010
2021-08-18 10:38:12 +08:00
ming159
2021-08-18 10:49:37 +08:00
@leonme
@raptor
@allenby
@dcoder
@hahasong
@lasfresas
"Talk is cheap ,Show me the code"
请贴出你们针对 54 楼问题的代码
ckdxc
2021-08-18 10:55:39 +08:00
TCP 就是 水管出水, 你用 定量 100ml 的杯子接水, 这次接 50ml, 但是每次都接满, 你要喝的时候就喝一半, 喝多少定着杯子的刻度尺就行
goushenggege
2021-08-18 10:55:41 +08:00
双向 RPC
zyxk
2021-08-18 10:57:05 +08:00
@jlkm2010 #55 谢谢,早就发现这个 gnet 了,这个库没有发现 demo,不知道为啥.
darknoll
2021-08-18 10:58:48 +08:00
粘包是什么鬼,拿胶水粘的吗

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

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

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

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

© 2021 V2EX