❶ linux下C語言用socket網路編程怎麼計算傳輸速度
這要你的通信程序協商一個協議,比如定義一個通信結構體,傳文件的時候,一開始發送結構體的信息過去,告訴對端你的文件總大小,然後,傳輸過程中,統計已經收到或者發送的數據,做個除法就得到速率了。
具體這類協商,你可以自己隨便想,也可以借鑒現有的比較好的一些設計,有些考慮斷點續傳的技術,還有壓縮的,看你代碼也不需要考慮吧。
❷ 我想學習linux下的網路編程。
分別些一個客戶端和服務端程序, 客戶端和伺服器端通過socket連接上後, 客戶端接收用戶輸入,然後把用戶輸入發送到伺服器端,伺服器端再把這些信息列印/存檔。當用戶輸入某個特定單詞(比如quit),客戶端結束與服務端的連結。
通過這個簡單的程序,你就掌握了最基本的網路編程了。 :)
❸ 請問Linux下學習網路編程應該具備哪些基礎知識
如果鐵了心干Linux編程,那還是要學好C語言,至於C++則最好別學(如果非C++不嫁,那麼C語言還是盡量不要深入)。
對C++實在不了解(實際上是根本沒學過,咱是散修)。Linux編程最好是先掌握一個腳本語言(shell、perl等,不需要學完,只需要知道它可以干哪些事,至於怎麼實現,可以在以後慢慢學),網路協議很可能要學一下,網路設備也要了解一下(總不好在U盤上建日誌文件系統吧),當然,最重要的始終是你所選擇的編程語言。
網路編程的工作,當然要找有這方面發展意向的機構(只要是有網路服務的機構,都會有這方面的人才需求,但國內大部分停留在網頁開發上)。
其實什麼都不用管,什麼都不用急著准備,給自己找點事做(實在想不出什麼可做的,不妨找點開源項目來看,如果有不懂的地方,再針對性地學習,如果全看懂了,就試著去改進它,或找下一個項目),用多少學多少,不要被老師「將來或許用得著」給束縛住(等你學完所有將來或許用得著的東西,只怕黑白無常為等你,早就成瞭望夫石了)。
最後再補充一點:如果要學C語言,K & R 兩人寫的C語言書蠻出名(有中英文版本,國際知名度甚高,幾乎是知道POSIX就會知道這本書)。
❹ linux下C語言網路編程 如何入門
1.
可以.
說實話,我不太明白你意思...如果說GCC
能不能編譯CPP程序..我告訴你可以..GCC
G++都是鏈接..它們根據後綴來確定是什麼語言..
如果說,網路程序能不能用C++寫..那就太多了..ACE就是明顯的一例..BOOST:ASIO也是一例..
2
我建議你用GCC
實際上GDB沒什麼大用..你後面就懂了..一般用在看CORE文件上...如GCC的好處是,,你可以對編譯過程有個了解..真的不難..常用的總共不超過5個參數......ECLIPSE,不建議用,你初學,精力全浪費到那上面了
❺ linux 網路編程 需要什麼語言 csdn
在linux里不同的領域用不同的開發語言:
1. 接近系統的軟體開發必然是C,因為linux是C語言開發的;
2. 系統關聯不大的應用程序開發可以用C或C++;
3. 動態網頁方面可以用perl或python腳本語言或java或php;
4. 日常管理上,當然是bash;
5. 做GUI界面開發的話,很多人用GTK,也有很多人用Qt。
當然也有一些其他新涌現出來的語言,比如go,ruby,還有一些輕量級的出色語言如lua。
❻ 學習linux下的c/c++編程 需不需要把shell學的很好
需要的
1 .linux的常用命令的用法,可以依照平時在windows下的日常工作在linux下用linux命令來完成,不懂可查詢「Linux命令大全」
2 .熟悉常用的linux用法之後,學習下shell腳本,大致了解一下用法
3 .買本unix環境高級編程,邊啃邊干
4. 注冊個github賬號,找些開源項目參加進去,或者有能力自己搞一個
5 .有精力的話了可以讀設備驅動,linux內核了,再選個方向,內存管理,文件系統或者網路編程
❼ 跪求一份linux下網路編程的學習心得
正好我上午正在看的這篇:
========================
解答:學習Linux的四個步驟
假設你是計算機科班出身,計算機系的基本課程如數據結構、操作系統、體系結構、編譯原理、計算機網路你全修過
我想大概可以分為4個階段,水平從低到高
從安裝使用=>linux常用命令=>linux系統編程=>內核開發閱讀內核源碼
其中學習linux常用命令時就要學會自己編譯內核,優化系統,調整參數
安裝和常用命令書太多了,找本稍微詳細點的就ok,其間需要學會正則表達式
系統編程推薦《高級unix環境編程》,黑話叫APUE
還有《unix網路編程》
這時候大概還需要看資料理解elf文件格式,連接器和載入器,cmu的一本教材中文名為《深入理解計算機系統》比較好
內核開發閱讀內核源碼階段,從寫驅動入手逐漸深入linux內核開發
參考書如下《linux device drivers》,黑話叫ldd
《linux kernel development》,黑話叫lkd
《understading the linux kernel》,黑話叫utlk
《linux源碼情景分析》
這四本書為搞內核的必讀書籍
最後,第三階段和第四階段最重動手,空言無益,光看書也不罩,不動手那些東西理解不了
學習linux/unix編程方法的建議
建議學習路徑:
首先先學學編輯器,vim, emacs什麼的都行。
然後學make file文件,只要知道一點就行,這樣就可以准備編程序了。
然後看看《C程序設計語言》K&R,這樣呢,基本上就可以進行一般的編程了,順便找本數據結構的書來看。
如果想學習UNIX/LINUX的編程,《APUE》絕對經典的教材,加深一下功底,學習《UNP》的第二卷。這樣基本上系統方面的就可以掌握了。
然後再看Douglus E. Comer的《用TCP/IP進行網際互連》第一卷,學習一下網路的知識,再看《UNP》的第一卷,不僅學習網路編程,而且對系統編程的一些常用的技巧就很熟悉了,如果繼續網路編程,建議看《TCP/IP進行網際互連》的第三卷,裡面有很多關於應用協議telnet、ftp等協議的編程。
如果想寫設備驅動程序,首先您的系統編程的介面比如文件、IPC等必須要熟知了,再學習《LDD》2。
對於幾本經典教材的評價:
《The C Programing Language》K&R 經典的C語言程序設計教材,作者是C語言的發明者,教材內容深入淺出。雖然有點老,但是必備的一本手冊,現在有時候我還常翻翻。篇幅比較小,但是每看一遍,就有一遍的收獲。另外也可用譚浩強的《C語言程序設計》代替。
《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常經典的書(廢話,Stevens的書哪有不經典的!),雖然初學者就可以看,但是事實上它是《Unix Network Programing》的一本輔助資料。國內的翻譯的《UNIX環境高級編程》的水平不怎麼樣,現在有影印版,直接讀英文比讀中文來得容易。
《Unix Network Programing》W.Richard Stevens:第一卷講BSD Socket網路編程介面和另外一種網路編程介面的,不過現在一般都用BSD Socket,所以這本書只要看大約一半多就可以了。第二卷沒有設計到網路的東西,主要講進程間通訊和Posix線程。所以看了《APUE》以後,就可以看它了,基本上系統的東西就由《APUE》和《UNP》vol2概括了。看過《UNP》以後,您就會知道系統編程的絕大部分編程技巧,即使卷一是講網路編程的。國內是清華翻譯得《Unix網路編程》,翻譯者得功底也比較高,翻譯地比較好。所以建議還是看中文版。
《TCP/IP祥解》一共三卷,卷一講協議,卷二講實現,卷三講編程應用。我沒有怎麼看過。,但是據說也很經典的,因為我沒有時間看卷二,所以不便評價。
《用TCP/IP進行網際互連》Douglus.E.Comer 一共三卷,卷一講原理,卷二講實現,卷三講高級協議。感覺上這一套要比Stevens的那一套要好,就連Stevens也不得不承認它的第一卷非常經典。事實上,第一卷即使你沒有一點網路的知識,看完以後也會對網路的來龍去脈了如指掌。第一卷中還有很多習題也設計得經典和實用,因為作者本身就是一位教師,並且卷一是國外研究生的教材。習題並沒有答案,留給讀者思考,因為問題得答案可以讓你成為一個中級的Hacker,這些問題的答案可以象Douglus索取,不過只有他只給教師卷二我沒有怎麼看,卷三可以作為參考手冊,其中地例子也很經典。如果您看過Qterm的源代碼,就會知道Qterm的telnet 實現部分大多數就是從這本書的源代碼過來的。對於網路原理的書,我推薦它,而不是Stevens的《TCP/IP祥解》。
《Operating System - Design and Implement》這個是講操作系統的書,用Minix做的例子。作者母語不是英文,所以英文看起來比較晦澀。國內翻譯的是《操作系統設計與實現》,我沒看過中文版,因為翻譯者是尤晉元,他翻譯的《APUE》已經讓我失望頭頂了。讀了這本書,對操作系統的底層怎麼工作的就會
有一個清晰的認識。
《Linux Device Driver》2e ,為數不多的關於Linux設備驅動程序的好書。不過內容有些雜亂,如果您沒有一些寫驅動的經驗,初次看會有些摸不著南北。國內翻譯的是《Linux設備驅動程序》第二版,第一版,第二版的譯者我都有很深的接觸,不過總體上來說,雖然第二版翻譯的有些不盡人意,但是相比第一版來說已經超出了一大截。要讀這一本書,至少應該先找一些《計算機原理》《計算機體系結構》的書來馬馬虎虎讀讀,至少應該對硬體和計算機的工作過程有一些了解。