學習網路編程是不是比較推薦Linux環境?

前段時間在做web編程,學了HTML,js,jsp等,項目做完之後想學習一下網路編程,於是去看了一下謝希仁老師的計算機網路,對網路原理和架構有了一個粗淺的認識,然後現在想開始學習網路編程,比較熟悉c++,java,和Python語言,上網查了一下,很多人都推薦在Linux或UNIX下做網路編程,所以想問一下,是不是先去熟悉一下這些然後再開始學習網路編程(我沒有Linux,UNIX知識),或者有沒有什麼圖書或者學習方法的推薦。謝謝~


我的答案:是!

unix類系統在處理網路請求方面就是有優勢的,互聯網所有的底層通信都可以在unix類系統找到具體的實現和應用。windows更多是關注於應用層的實現。

《TCP/IP協議》的樣例都是在linux下面操作的,《unix編程藝術》上面同樣有很多網路方面的代碼樣例。

windows開發環境的報錯有多奇葩,用過的人都知道。在windows要想調試網路問題,你需要獲取管理員許可權,安裝各種軟體來進行截取和調試,即使這樣也還可能收到系統莫名其妙的錯誤拋出。想查清楚錯誤的原因?抱歉系統底層代碼已封裝,不能查看。

在linux系統環境下面學習網路編程,可以減少很多不必要的系統環境錯誤處理,首先網路方面的很多工具,就已經內置在系統安裝包裡面了,即使沒有,通過系統內置的包管理也可以很輕鬆的裝上去dump,trace,tcp,udp等處理,所有的代碼只要你想看,都可以查看得到,當然新手是沒必要查看那麼低層的代碼的,這麼說只是想表達,學網路編程,linux系統是最省事的開發環境。

對於新手來說,linux需要了解到什麼程度?

1.知道怎麼在虛擬機安裝配置linux系統。零基礎直接使用真機linux那是真geek,新手只是為了學習知道怎麼在windows上面開虛擬機玩就夠了。

2.linux系統相關的包管理:安裝、配置、卸載。這是linux最基本的操作,包管理是linux操作系統的基本功。

3.linux命令行下面的基礎操作。vim:編輯(iaeo)、修改(scwx)、查詢(:)、保存(:w)、退出(:q);基礎的shell命令:文件相關的(列出、修改屬性、移動、刪除),文本相關的(讀取、輸入、截取、查詢),網路編程工具類相關的(截取、過濾、修改、發送、接收)。

4.linux開發工具,C語言一套:gcc、gdb、make。

前兩項,個人建議看《鳥哥的linux私房菜》按需要來看,學時不會超過36個小時,再懶一周也能上手安裝配置linux相關的事情了。

第三項,個人建議按需查詢,關鍵詞類似:vim 編輯;linux 文件 可執行許可權; linux 文本 讀取;linux 網路調試 dump;

第四項,《c primer plus》這本書有很清楚的語法講解,配合《linux C一站式學習》進行調試工具方面的學習。入門linux下面調試C足夠了。這個有編程基礎,學時達到100個小時算是摸到了門檻,勤奮的在校生一個月,不勤奮的一個學期或者無限期吧。

以上的基礎打好,就可以開始入網路編程的坑了,打好基礎再看網路編程方面的內容,勢如破竹。


毫無疑問,當然是linux


是,Linux下工具多。雖然windows下VS很強大,但是muduo沒有windows版本


其實是這樣的,Linux環境下的網路編程,你使用原生socket,寫最原始的connect,listen,等程序模塊,可以直接移植到其它平台,只需要編譯一下,當然如果你在windows平台上也可以這樣寫,不過很多初級程序猿如果最開始在windows平台上寫,可能首先使用的是基於win32 api的網路編程,結果發現想讓程序在其它平台上跑,不可能了,所以就得出結論,最好在linux平台寫。 所以,其實答案是否定的,只要你寫的是可以移植的網路程序,不管哪個平台,都一樣。只是 linux網路編程中的epoll等高級功能,用的多點而已。特別是IO訪問量大的程序。


答案是否。

網路編程是對環境最沒要求的(尤其題主是初學者)。

不過如果你是學生的話,有時間學學Linux 還是很有用的。


Solaris 比較好。更正統。

NetBSD 更好,不僅正統,還方便你直接看它的 implementation。


推薦閱讀:

TAG:Linux | 網路編程 |