電商專業(yè)學(xué)習(xí)嵌入式軟件開發(fā)第五十天

  • 網(wǎng)絡(luò)編程第一天

從今天開始講網(wǎng)絡(luò)編程,為期一周,今天講的主要內(nèi)容是socket,也是本周的重點(diǎn),老師留的兩道題目就第二題有難度,第一題不是很難,和例題很像,就是不知道能不能寫出來.上周已經(jīng)連續(xù)兩天沒有寫出來老師留的作業(yè)了,今天再寫不出來可能就要留到下個(gè)班級了,而且項(xiàng)目也已經(jīng)進(jìn)行到第三周了,這周五之前再完不成就直接留級到下個(gè)班級重修了,否則這周學(xué)完還是要做新項(xiàng)目,到時(shí)會跟不上的,只會越托越多。(從網(wǎng)上找到了一篇socket通信原理的文章http://www.cnblogs.com/fuchongjundream/p/3914696.html,是以c++為例講解的)

一、什么是互聯(lián)網(wǎng)?(internet)
網(wǎng)網(wǎng)相聯(lián)
廣義的概念,有很多互聯(lián)網(wǎng)

二、因特網(wǎng)(Internet)
是現(xiàn)存所有互聯(lián)網(wǎng)中被老百姓使用最為頻繁的

三、網(wǎng)絡(luò)的作用:
1. 共享內(nèi)容
2. 傳遞消息
3. 提供計(jì)算(云計(jì)算)

四、通信基礎(chǔ)
1. 電路交換
2. 報(bào)文交換
3. 分組交換
通信分類:
1. 單工通信
2. 半雙工通信
3. 全雙工通信

五、網(wǎng)絡(luò)編程(因特網(wǎng)):
1. 如何標(biāo)識因特網(wǎng)上不同的電腦(IP地址):
IP地址的表示方式:(ifconfig)
a. 點(diǎn)分十進(jìn)制字符串: "192.168.1.1",每個(gè)十進(jìn)制數(shù)取值范圍:0~255
程序員習(xí)慣使用的
b. 四字節(jié)整數(shù):(網(wǎng)絡(luò)傳輸時(shí)采用的)
inet_ntoa
inet_aton
c. 域名(domain name ):www.baidu.com 老百姓
域名服務(wù):gethostbyname

2. 如何標(biāo)識同一臺電腦上的不同進(jìn)程(端口號):
    unsigned short
    1~1023:知名網(wǎng)絡(luò)服務(wù)進(jìn)程    如: 80-網(wǎng)頁服務(wù) 23-文件服務(wù) 
    >= 1024:系統(tǒng)動態(tài)使用的
    
3. 如何標(biāo)識局域網(wǎng)上不同的電腦(即區(qū)分不同的網(wǎng)卡):
    (硬件地址 MAC地址):
    a. 冒號分的六個(gè)十六進(jìn)制數(shù)(0~0xff)組成的字符串:
       "60:6c:66:03:68:c6"
    b. 六字節(jié)的整型數(shù)

4. 協(xié)議(Protocol)
    任何形式的通信雙發(fā)必須遵循統(tǒng)一的規(guī)則,這些規(guī)則也稱協(xié)議。
    網(wǎng)絡(luò)通信的本質(zhì)就是通過各種傳輸介質(zhì)傳輸二進(jìn)制位,而用協(xié)議來描述這些二進(jìn)制位的作用與含義。
    不同的互聯(lián)網(wǎng)采用的協(xié)議是不一樣的,因特網(wǎng)這個(gè)互聯(lián)網(wǎng)采用的協(xié)議為TCP/IP協(xié)議族(棧).
    ISO: OSI七層模型
    TCP/IP:五層模型
       應(yīng)用層:業(yè)務(wù)數(shù)據(jù)
       傳輸層:進(jìn)程和進(jìn)程之間的傳輸(TCP)
       網(wǎng)絡(luò)層:電腦到電腦之間的傳輸(IP)
       數(shù)據(jù)鏈路層:同一局域網(wǎng)網(wǎng)卡到網(wǎng)卡
       物理層:電纜傳輸
       
    PDU:Protocol Data Unit
5. 傳輸層的使用
    TCP(重中之重): 面向連接 可靠的  
    UDP:非面向連接  不可靠的

6. 應(yīng)用層的業(yè)務(wù)邏輯:
     應(yīng)用層協(xié)議:
     a. 別人已經(jīng)制定好:http  ftp smtp pop3 imap4
     b. 自定義協(xié)議:
     
7. C/S:Client/Server 客戶端/服務(wù)端
      B/S:網(wǎng)頁客戶端(瀏覽器) / 網(wǎng)頁服務(wù)器進(jìn)程
      
8. 基于TCP的C/S形式的網(wǎng)絡(luò)編程
      socket(套接字):插頭 插孔 插排
      客戶端的Socket:插頭
      服務(wù)端則有兩種Socket:
                               a. 提供插孔的插排
                               b. 提供服務(wù)的插孔
                               
     這三種Socket,都必須具備如下條件才可以發(fā)送或接收數(shù)據(jù):
     1). 本方的地址(自己的IP地址,自己的端口號)
     2). 對方的地址(對方的IP地址,對方的端口號)
     
     客戶端代碼模板:
     sockfd = socket(...)//socket描述符
     connect(...);
     read/write/send/recv
     close(sockfd);
     
     服務(wù)端代碼模板:
     sockfd = socket(...);
     bind(....);
     listen(....);//sockfd稱為插排
     while(1)
     {
       clifd = accept(....);//clifd插孔
       .....
       close(clifd);
     }
     close(sockfd)
9. 字節(jié)序
    unsigned int x = 0x12345678;
    小端字節(jié)序(little endian):低位數(shù)字放在低地址
    大端字節(jié)序(big endian):低位數(shù)字放在高地址
    
    為了統(tǒng)一,業(yè)界將網(wǎng)絡(luò)字節(jié)序確定為大端字節(jié)序

六、作業(yè):
1. 客戶端發(fā)送一個(gè)學(xué)生數(shù)據(jù)(姓名、學(xué)號、三門功課成績)給服務(wù)器,服務(wù)器返回該學(xué)生學(xué)科成績的總分
2. 編寫函數(shù)完成將4字節(jié)的整型轉(zhuǎn)換成點(diǎn)分十進(jìn)制字符串形式的IP地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容