V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cyheng
V2EX  ›  Java

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

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

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

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

    用来写写 网络应用是好的,但是对于了解低层原理没什么好处。
    情形就好像让临床医生去研究 生物学,让建筑工程师研究理论物理——绕太远了。
    zhengxiaowai
        15
    zhengxiaowai  
       2018-03-19 10:26:14 +08:00
    既然不想看理论,直接 github 中搜索源码看
    AngelCriss
        16
    AngelCriss  
       2018-03-20 00:46:48 +08:00
    @cyheng 这玩意儿和数据结构算法啥的有共同点,套路都已一样的,你用 Java 也好 C 也好,最终都是调用系统函数,所以你看 unp 是没错的。
    gabon
        17
    gabon  
       2018-04-30 11:54:51 +08:00 via Android
    先看 unp 啊,我就是先看 unp 再看 netty。有了 unp 基础对理解 netty 有很大帮助
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:39 · PVG 22:39 · LAX 06:39 · JFK 09:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.