Java 有哪些基于应用层通信协议的框架?

2020-06-28 14:57:42 +08:00
 tctc4869

用基于传输层 tcp 协议的 socket 框架(比如 Netty )要简单的通信,要处理粘半包,如果要考虑传输特殊格式的话剧,那么可以用一用原始的 socket 实现。

如果考虑多文件(上传下载),要考虑更多的情况,要编写的代码就更多。那么有哪些基于应用层协议的通信框架么,比如 WebSocket,包括客户端与服务端。关于 websocket 框架,java 有哪些呢,服务端与客户端?

不一定要与 http 服务端程序挂在一个进程里,可能会单独使用。

3998 次点击
所在节点    Java
45 条回复
GM
2020-06-28 15:01:32 +08:00
都 0202 年了,还神“粘半包”,tcp 是个流( stream ),搞明白什么叫 stream,再来谈 tcp 通讯。
tctc4869
2020-06-28 15:17:54 +08:00
@GM 素质真好啊。
RoyceLee
2020-06-28 15:20:43 +08:00
@GM 不正是因为是 stream,所以才会出现粘包吗?
tctc4869
2020-06-28 15:25:54 +08:00
@RoyceLee 我感觉它的评论内容像是杠精,就像国内的一些喷子看见一篇文章的某个段落的几个字就抓住咬着不放一样朝着对方说教,我不知道我开头说的话,哪里刺激到它了。
dcalsky
2020-06-28 15:26:10 +08:00
粘包是通俗说法,就好像 ji 排水专业都读 gei 排水一样,大家懂就行。不然等你牛逼了给它重新命名一个咯。

不歪楼地说,vertx 比较适合楼主说的,上传下载 websocket 等等都有支持到,也是基于 netty 的。
GM
2020-06-28 15:37:46 +08:00
@tctc4869 你用“它”来指代我,就是素质很高?
tctc4869
2020-06-28 15:39:55 +08:00
@dcalsky 在 android 手机里挂起一个用 vert.x 做的通信客户端合适么?
GM
2020-06-28 15:42:30 +08:00
@tctc4869
不想抬杠,只是看到太多“粘包”文章,TCP 特性都不知道就大谈特谈怎么优化解决“粘包问题”,所以一楼评论是我以为又是那种情况,忍不住就这么说了。

我想了想,确实不太合适,我道歉。不过你那个“它”,希望你也能解释一下。
tctc4869
2020-06-28 15:44:44 +08:00
@GM 我又不知道你到底是男的还是女的,甚至是通过图灵测试的机器人,如果我用他,就让人以为你是男的,如果用她,就让人觉得,你是女的,要么是女装程序员。所以我不知道你的性别,所以我用“它”代替。
wysnylc
2020-06-28 15:47:43 +08:00
各位民科请多学点东西
wysnylc
2020-06-28 15:48:04 +08:00
图忘了
sagaxu
2020-06-28 15:50:47 +08:00
@GM 搞的清楚流和包的,就不会问这种问题了。
gotonull
2020-06-28 15:51:56 +08:00
rsocket 了解一下,我们项目有用到
wysnylc
2020-06-28 15:52:56 +08:00
可能有人觉得 B 乎或者廖雪峰不靠谱,那就来个 v2 的
GM
2020-06-28 15:54:01 +08:00
@tctc4869 我不是很接受这个解释,不过鉴于我冒犯在先,我就不计较了。
dcalsky
2020-06-28 15:57:40 +08:00
@tctc4869 不合适。手机 websocket 通信看我之前帖子,自己写一个很简单。上传下载文件用 okhttp 即可。
xuanbg
2020-06-28 15:57:42 +08:00
楼主如果自己用,那随便整一个协议就完了。如果要开放接口,还是乖乖用 http 吧。虽然效率低,但优点是方便。你整个别的什么 gRPC 这种,如果需要专门搞个 client 的话,还真的挺费事。
cigarzh
2020-06-28 15:59:17 +08:00
Vert.x
tctc4869
2020-06-28 16:02:40 +08:00
@xuanbg 如果是在手机里,用什么合适。
xuanbg
2020-06-28 16:04:26 +08:00
@tctc4869 真想造轮子就自己造呗。如果不是,我劝你还是 http 吧……

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

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

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

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

© 2021 V2EX