cyheng
V2EX  ›  Java

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

  •  
  •   cyheng · Mar 18, 2018 · 6011 views
    This topic created in 3151 days ago, the information mentioned may be changed or developed.
    我想写个文件服务器,在网络中搜寻一番感觉能用 netty 实现,但是个人对网络编程这块不太熟悉。又一番搜索说可以从《 UNIX 网络编程》学起。这本书挺经典的,但是代码都是用 C 写的,可能对于我的帮助没有那么大。大家觉得我应该怎么抉择呢?
    17 replies  •  2018-04-30 11:54:51 +08:00
    wspsxing
    wspsxing
    Mar 18, 2018❤️1
    1
    作为写过的,给你一点点建议
    如果注重功能,可维护性,建议用自己熟悉的语言写,基于 WEB 框架或者 HTTP 库维护容易,功能容易完善。
    如果是注重学习网络编程,从 C/Tcp 写起可以学习网络编程。
    从某个 HTTP 库写起可以了解 WEB 框架。
    AngelCriss
    AngelCriss
    Mar 19, 2018
    2
    那你看语言无关的啊,比如 tcp ip 详解
    AngelCriss
    AngelCriss
    Mar 19, 2018
    3
    @wspsxing 又见 Rust 巨佬
    wellsc
    wellsc
    Mar 19, 2018 via iPhone
    4
    先看书再看 tornado 源码
    wspsxing
    wspsxing
    Mar 19, 2018 via Android
    5
    @AngelCriss 学霸你好。
    hezhe
    hezhe
    Mar 19, 2018 via Android
    6
    建议先自己写个对各种知识有粗浅了解,再结合书本学以致用,修改重构代码。
    cyheng
    cyheng
    OP
    Mar 19, 2018 via Android
    7
    @wspsxing 感谢大佬建议。
    @AngelCriss 那本书全是理论太枯燥,看不下去,我更偏向于实践中学习。
    @wspsxing 书指的是哪本书?

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

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

    用来写写 网络应用是好的,但是对于了解低层原理没什么好处。
    情形就好像让临床医生去研究 生物学,让建筑工程师研究理论物理——绕太远了。
    zhengxiaowai
    zhengxiaowai
    Mar 19, 2018
    15
    既然不想看理论,直接 github 中搜索源码看
    AngelCriss
    AngelCriss
    Mar 20, 2018
    16
    @cyheng 这玩意儿和数据结构算法啥的有共同点,套路都已一样的,你用 Java 也好 C 也好,最终都是调用系统函数,所以你看 unp 是没错的。
    gabon
    gabon
    Apr 30, 2018 via Android
    17
    先看 unp 啊,我就是先看 unp 再看 netty。有了 unp 基础对理解 netty 有很大帮助
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4465 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 09:58 · PVG 17:58 · LAX 01:58 · JFK 04:58
    ♥ Do have faith in what you're doing.