c語言網路編程教程
『壹』 如何學習網路編程
1.利用WinInet函數庫寫了幾個簡單的網路應用程序:簡易登錄、查詢新書RSS等;了解了HTTP協議的一些內容。
2.看孫鑫的VC視頻教程, ,雖然照著視頻能夠寫出實例代碼來,但是僅僅是會用,其中很多原理都不理解,比如說WSA開頭的非同步函數,Winsock2對socket的一些增強或者改進等。
3.一邊上《計算機網路》的課,一邊讀《C++網路編程》。通過計算機網路課我知道了所謂的協議分析是怎麼一回事情,通過wireshark抓包分析,「協議」就如同這個詞本身意思是一樣的,是通信過程中的一種約定,規定了數據包中的每個或每幾個位元組代表了什麼意思;
4.去看《計算機網路高級編程技術》,我初略的翻了翻,看到裡面的基礎、提高、綜合訓練篇、突然反應過來:socket和操作系統提供的系統調用,基本上都是C語言介面的,協議欄位的具體表現,不就是用結構體嗎?協議中的幾個位元組代表什麼與C語言基本數據類型就能對應了起來(-_-!這是缺少實踐造成的遲鈍啊)。
5.了解下Boost.asio,Java的MINA框架,這些都是非同步I/O前攝器模式的實現,當然還有ACE_Proactor
6.閱讀《深入理解MySQL核心技術》和Linux程序設計(第3版)》,從把整個知識體系都聯系起來,從socket到完整網路伺服器程序,網路編程才算正式進入了門道。
所以,正常的學習路徑應該是:C/C++語言 -->>計算機網路 -->>協議分析 -->>BSD Socket、OS API ( fork()、pthread_create()、select() ) -->>Reactor、Proactor模式
在這個過程我的體會是,最好是從Linux下或者Unix底下學習,比起Windows,Linux的編程介面設計更很簡潔,使用的基本上都是標準的數據類型,很多源代碼是開放的,而且我比較習慣於看小寫的英文單詞。。。我發現,如果最一開始能夠從整體上了解網路編程的全景,就會知道應該學習什麼,下一步該學什麼,循序漸進才是好的學習方法。
我所理解的「全景」:
--計算機網路種類有很多種:ATM、X.25、Internet(大大小小的區域網互聯而成,乙太網、令牌網等等)
---- Internet通信的協議也有很多種,其中最核心的是TCP/IP協議
---- 網路編程介面也有很多種,BSD UNIX提出了socket,是一種通信機制,是管道概念的擴展
-------- socket有三種屬性:域(或協議族)、類型、協議
-------- 最常用的協議族有AF_UNIX和AF_INET(對應現在的Internet),AF_INET的類型又有兩種:數據流(tcp)和數據報 (udp)
------------ 在<sys/types.h>和<sys/socket.h>定義了socket編程的系統調用:socket()、struct sockaddr、bind()、listen()、accept()、connect()、close()、sendto()、recvfrom()
------------ 其中bind()是用來給創建的socket命名的,如果是AF_UNIX會關聯到文件系統的一個路徑上,如果是AF_INET則會綁定到IP的埠號上;listen()用來保存未處理的客戶請求的隊列;accept()等待客戶端的連接,會創建新的socket用來處理客戶端連接。
------------ 由於歷史原因,不同的計算機使用不同的位元組序來表示整數,Intel和Motorola的處理器的位元組序就不一樣,所以要轉換為網路序(好像Unicode中的Little-Endian、Big-Endian也是這么個情況。。)
------------ 伺服器必然為多客戶服務的,為了提高運行效率,高效利用系統資源,就出現多進程、多線程的服務端程序,這就需要用到fork()和pthread_create()了,再往下就是select()、pull()等多路復用和非同步I/O機制了。
----------------為了簡化網路應用程序的開發,增加代碼的復用性、擴展性、可謂性;出現了Reacotr、Preactor等設計模式,出現了ACE、Boost.asio等框架、進一步簡化網路開發的難度,出現了WinInet、libcurl這樣的面向應用層的函數庫。
『貳』 在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫
需要用到的頭文件包含:
#include <winsock2.h>
#include <windows.h>
與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫
Winsock,一種標准API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:
Winsock 1:
Windows CE平台支持。
頭文件:WinSock.h
庫:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規范的函數;
頭文件:WinSock2.h
庫:ws2_32.lib
mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll
(2)c語言網路編程教程擴展閱讀
winsock庫的載入與卸載:
載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
載入成功,返回值為0。
WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~
LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。
卸載:int WSACleanup(void);比起載入,卸載的函數真是輕松愉快。
『叄』 c語言:網路編程視頻
我和你一樣,也是正在學網路編程的,首先得先把C基礎學會,我現在也正在學回C,看視頻學的答,我現在看的是夏老師的,感覺還行,最吸引我的的地方就是講的一聽就能聽懂,而且不繁瑣啰嗦,簡明清晰,都是重點。之前看過郝斌金文什麼的,康輝的也看了一點,感覺都講的太高深了,而且聽不出哪些是重點,有用沒用的都講,像我這樣初學者都看的失去學的信心了。
『肆』 c語言可以寫網路程序嗎
我知道用VC調用windows 網路API可以實現一些網路功能.不過要先學會一大堆亂七八糟的網路知識回.
學16位的DOS環境下的C語言主要就答是學一些語法和基本的函數.真正要編在widnows環境下應用的程序還得用VC吧.我覺得學過tourb C 再自學VC不會有啥大障礙吧.先用VC 調用winsock控制項編個小局網路聊天程序.再試些復雜的windows API這樣的書不少的.
『伍』 誰知道C語言socket入門教程或者書籍
先看windows api編程、搞明白後看王艷平那本windows網路編程、相當不錯
『陸』 C++網路編程都要學什麼
建議報一個培訓班,都是零基礎入學的,這是網路編程的全部課程,專要是感興趣的話可以屬了解一下:
第一階段
1、計算機操作基礎
2、Office辦公自動化
3、計算機組裝與維護
4、C語言
第二階段
1、SQL Server2005資料庫設計
2、和高級查詢
3、數據結構
4、C#面向對象程序設計
5、HTML5與CSS3開發
6、JavaScript
7、jQuery高級編程
8、PHP開發
第三階段
APP Development
1、JavaScript特效製作
2、jQuery應用開發
3、HTML5與CSS3開發
4、Java面向對象程序設計
第四階段
JAVAWEB Development
1、產品流程應用
2、移動平台界面設計
3、Oracle資料庫開發
4、JavaWeb應用開發
Mobile APP Development
1、實訓一:WEB前端設計與開發
2、實訓二:J2EE項目開發
『柒』 用C語言寫windows網路編程看什麼書
windows程序設計
『捌』 怎麼自學C語言 入門
在開始學習C語言基礎時,要反問自己為什麼學C語言,如何學好C語言。同時要知道什麼是C語言以及C語言的發展。
當對這些知識有了一個概念之後,就正式開始學習C語言了,其中,可能會學到數據類型、運算符、表達式、數組、/函等,這些是為了對C語言的基礎有一個基礎認知,擴展,整合;還會學到指針、聯合體、結構體、枚舉、位運算、預處理、文件等知識點,學這些是為了全面掌握面向過程設計、實練邏輯演算法,拓展思維模式等過程。
學完了這些,還可能會講到VS、VC++、C++、C和TC—認識開發環境和語言的區別。
這里只給大家介紹一個大概,如果有興趣的話,可以和我私聊哦
第二階段:上機實戰訓練
學完了這些理論知識後,就得將學到的知識點全部運用到實踐中去。這樣才能更好學習入門。分享不錯裙的有軟體視頻資料分享
1、C++語言熟練,熟悉C++語法,包括面向對象的概念,模版等
這一階段需要比較艱辛的過程,需要學習很多書,包括《C++ Programming Language》,《Effective C++》,《More Effective C++》,《Thinking in C++》,《C++對象模型》,《C++ 模版》,如果上述書籍已經很熟悉了,本人認為,在學習階段,已經很不錯了。該過程可以在大學完成,需要一到兩年的時間,應為是純理論的東西,只能算熟悉。在該過程中,需要做一些簡單的程序。
2、C++做項目,使用C++做項目,需要比較多的其它庫,比如UI庫,還需要使用一些網路庫等,這個時候,就可以看到C++的博大精深了,此時,光有C++語言知識是不夠的,需要補充一些平台開發的知識,看看開源的C++項目。比如:Windows程序設計,C++網路編程,DirectX游戲開發,如果用C++做了兩個以上的項目,那以及很不錯了。
3、最高境界是精通,自然是量的積累才會有質地變化。
『玖』 老師的大作業是用c語言實現點對點的傳輸,可我沒有網路編程的基礎,求各位大神推薦學習這方面的視頻網站
菜鳥教程,csdn查也行,只要你想學,多的是資料給你看。
『拾』 求推薦c語言網路編程方面的書
不是吧、。。。應該還不錯吧
認真看也能夠學到點東西的