初学网络编程直接上手 netty 写个服务器还是从《UNIX 网络编程》卷一学起?

2018-03-18 21:01:41 +08:00
 cyheng
我想写个文件服务器,在网络中搜寻一番感觉能用 netty 实现,但是个人对网络编程这块不太熟悉。又一番搜索说可以从《 UNIX 网络编程》学起。这本书挺经典的,但是代码都是用 C 写的,可能对于我的帮助没有那么大。大家觉得我应该怎么抉择呢?
4772 次点击
所在节点    Java
17 条回复
wspsxing
2018-03-18 22:02:43 +08:00
作为写过的,给你一点点建议
如果注重功能,可维护性,建议用自己熟悉的语言写,基于 WEB 框架或者 HTTP 库维护容易,功能容易完善。
如果是注重学习网络编程,从 C/Tcp 写起可以学习网络编程。
从某个 HTTP 库写起可以了解 WEB 框架。
AngelCriss
2018-03-19 00:01:35 +08:00
那你看语言无关的啊,比如 tcp ip 详解
AngelCriss
2018-03-19 00:01:54 +08:00
@wspsxing 又见 Rust 巨佬
wellsc
2018-03-19 00:03:15 +08:00
先看书再看 tornado 源码
wspsxing
2018-03-19 00:09:24 +08:00
@AngelCriss 学霸你好。
hezhe
2018-03-19 00:14:24 +08:00
建议先自己写个对各种知识有粗浅了解,再结合书本学以致用,修改重构代码。
cyheng
2018-03-19 00:36:49 +08:00
@wspsxing 感谢大佬建议。
@AngelCriss 那本书全是理论太枯燥,看不下去,我更偏向于实践中学习。
@wspsxing 书指的是哪本书?

我换一种问法吧,网络编程这个概念是不是跟语言无关…这本书虽然是用 c 作为例子,但是学完之后无论你用什么语言都能写一个服务器。如果大家回答是的话,我估计能下定决心啃这本书了。
cyheng
2018-03-19 00:41:09 +08:00
@hezhe 大佬,能说说具体例子吗?
wspsxing
2018-03-19 00:45:42 +08:00
@cyheng 我没有说哪本书啊,学霸说的那本 tcpip 详解作为理论补充也不错

你要是觉得 c 太繁杂,就用基于 java (你会的?)的 socket tcp 开始写呗,只是这个没有 c 的那么靠近底层。不过网络编程的知识是通用的。
susecjh
2018-03-19 00:53:30 +08:00
用 C 吧,贼爽
cyheng
2018-03-19 00:59:14 +08:00
@wspsxing 额,刚才回复不小心 @错了不好意思……
听到你这句我就安心了,其实我担心的就是会出现某种才有的特定 api 的情况。照你这么一说,只是不同语言的实现繁杂程度不同?
wspsxing
2018-03-19 01:11:27 +08:00
基本的 api 差不多的(名字不同也可能,但是肯定得有 api 才能满足需求啊,仔细看 api 文档),只是高级的语言可能没有暴露 c 那么多细节,然后写起来高级语言简单一些。
Mirana
2018-03-19 01:24:45 +08:00
@cyheng 感觉那本书是做后端必看的。。
noli
2018-03-19 01:28:32 +08:00
从 netty 开始的话,就别想学到什么 TCP IP 的基础知识了吧。
本质上来说, 什么 netty nodejs 都是在 OS 提供的 C API 基础上,总结使用经验,经过大量抽象提炼的。

用来写写 网络应用是好的,但是对于了解低层原理没什么好处。
情形就好像让临床医生去研究 生物学,让建筑工程师研究理论物理——绕太远了。
zhengxiaowai
2018-03-19 10:26:14 +08:00
既然不想看理论,直接 github 中搜索源码看
AngelCriss
2018-03-20 00:46:48 +08:00
@cyheng 这玩意儿和数据结构算法啥的有共同点,套路都已一样的,你用 Java 也好 C 也好,最终都是调用系统函数,所以你看 unp 是没错的。
gabon
2018-04-30 11:54:51 +08:00
先看 unp 啊,我就是先看 unp 再看 netty。有了 unp 基础对理解 netty 有很大帮助

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

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

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

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

© 2021 V2EX