初学网络编程直接上手 netty 写个服务器还是从《UNIX 网络编程》卷一学起? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cyheng
V2EX    Java

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

  •  
  •   cyheng 2018-03-18 21:01:41 +08:00 5225 次点击
    这是一个创建于 2767 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想写个文件服务器,在网络中搜寻一番感觉能用 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     Solana     5443 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 94ms UTC 08:01 PVG 16:01 LAX 01:01 JFK 04:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86