91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>Socket網(wǎng)絡(luò)基礎(chǔ)編程

Socket網(wǎng)絡(luò)基礎(chǔ)編程

2017-10-18 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

  10.2.1 socket概述
  1.socket定義
  在Linux中的網(wǎng)絡(luò)編程是通過socket接口來進(jìn)行的。人們常說的socket是一種特殊的I/O接口,它也是一種文件描述符。socket是一種常用的進(jìn)程之間通信機(jī)制,通過它不僅能實(shí)現(xiàn)本地機(jī)器上的進(jìn)程之間的通信,而且通過網(wǎng)絡(luò)能夠在不同機(jī)器上的進(jìn)程之間進(jìn)行通信。
  每一個socket都用一個半相關(guān)描述{協(xié)議、本地地址、本地端口}來表示;一個完整的套接字則用一個相關(guān)描述{協(xié)議、本地地址、本地端口、遠(yuǎn)程地址、遠(yuǎn)程端口}來表示。socket也有一個類似于打開文件的函數(shù)調(diào)用,該函數(shù)返回一個整型的socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^socket來實(shí)現(xiàn)的。
  2.socket類型
  常見的socket有3種類型如下。
 ?。?)流式socket(SOCK_STREAM)。
  流式套接字提供可靠的、面向連接的通信流;它使用TCP協(xié)議,從而保證了數(shù)據(jù)傳輸?shù)恼_性和順序性。
 ?。?)數(shù)據(jù)報socket(SOCK_DGRAM)。
  數(shù)據(jù)報套接字定義了一種無連接的服務(wù),數(shù)據(jù)通過相互獨(dú)立的報文進(jìn)行傳輸,是無序的,并且不保證是可靠、無差錯的。它使用數(shù)據(jù)報協(xié)議UDP。
 ?。?)原始socket。
  原始套接字允許對底層協(xié)議如IP或ICMP進(jìn)行直接訪問,它功能強(qiáng)大但使用較為不便,主要用于一些協(xié)議的開發(fā)。
  10.2.2 地址及順序處理
  1.地址結(jié)構(gòu)相關(guān)處理
  (1)數(shù)據(jù)結(jié)構(gòu)介紹。
  下面首先介紹兩個重要的數(shù)據(jù)類型:sockaddr和sockaddr_in,這兩個結(jié)構(gòu)類型都是用來保存socket信息的,如下所示:
  struct sockaddr
  {
  unsigned short sa_family; /*地址族*/
  char sa_data[14]; /*14字節(jié)的協(xié)議地址,包含該socket的IP地址和端口號。*/
  };
  struct sockaddr_in
  {
  short int sa_family; /*地址族*/
  unsigned short int sin_port; /*端口號*/
  struct in_addr sin_addr; /*IP地址*/
  unsigned char sin_zero[8]; /*填充0 以保持與struct sockaddr同樣大小*/
  };
  這兩個數(shù)據(jù)類型是等效的,可以相互轉(zhuǎn)化,通常sockaddr_in數(shù)據(jù)類型使用更為方便。在建立socketadd或sockaddr_in后,就可以對該socket進(jìn)行適當(dāng)?shù)牟僮髁恕?br />  ?。?)結(jié)構(gòu)字段。
  表10.1列出了該結(jié)構(gòu)sa_family字段可選的常見值。
  表10.1
  結(jié)構(gòu)定義頭文件#include 《netinet/in.h》
  sa_familyAF_INET:IPv4協(xié)議
  AF_INET6:IPv6協(xié)議
  AF_LOCAL:UNIX域協(xié)議
  AF_LINK:鏈路地址協(xié)議
  AF_KEY:密鑰套接字(socket)
  sockaddr_in其他字段的含義非常清楚,具體的設(shè)置涉及其他函數(shù),在后面會有詳細(xì)的講解。
  2.?dāng)?shù)據(jù)存儲優(yōu)先順序
 ?。?)函數(shù)說明。
  計算機(jī)數(shù)據(jù)存儲有兩種字節(jié)優(yōu)先順序:高位字節(jié)優(yōu)先(稱為大端模式)和低位字節(jié)優(yōu)先(稱為小端模式,PC機(jī)通常采用小端模式)。Internet上數(shù)據(jù)以高位字節(jié)優(yōu)先順序在網(wǎng)絡(luò)上傳輸,因此在有些情況下,需要對這兩個字節(jié)存儲優(yōu)先順序進(jìn)行相互轉(zhuǎn)化。這里用到了4個函數(shù):htons()、ntohs()、htonl()和ntohl()。這4個地址分別實(shí)現(xiàn)網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序的轉(zhuǎn)化,這里的h代表host,n代表network,s代表short,l代表long。通常16位的IP端口號用s代表,而IP地址用l來代表。
 ?。?)函數(shù)格式說明。
  表10.2列出了這4個函數(shù)的語法格式。
  表10.2 htons等函數(shù)語法要點(diǎn)
  所需頭文件#include 《netinet/in.h》
  函數(shù)原型uint16_t htons(unit16_t host16bit)
  uint32_t htonl(unit32_t host32bit)
  uint16_t ntohs(unit16_t net16bit)
  uint32_t ntohs(unit32_t net32bit)
  函數(shù)傳入值host16bit:主機(jī)字節(jié)序的16位數(shù)據(jù)
  host32bit:主機(jī)字節(jié)序的32位數(shù)據(jù)
  net16bit:網(wǎng)絡(luò)字節(jié)序的16位數(shù)據(jù)
  net32bit:網(wǎng)絡(luò)字節(jié)序的32位數(shù)據(jù)
  函數(shù)返回值成功:返回要轉(zhuǎn)換的字節(jié)序
  出錯:-1
  注意調(diào)用該函數(shù)只是使其得到相應(yīng)的字節(jié)序,用戶不需清楚該系統(tǒng)的主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序是否真正相等。如果是相同不需要轉(zhuǎn)換的話,該系統(tǒng)的這些函數(shù)會定義成空宏。
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1冷柜-電氣控制系統(tǒng)講解
  2. 13.68 MB  |  4次下載  |  10 積分
  3. 2安川A1000變頻器中文版說明書
  4. 20.16 MB  |  3次下載  |  3 積分
  5. 3直流電路的組成和基本定律
  6. 1.67 MB   |  2次下載  |  免費(fèi)
  7. 4丹佛斯2800系列變頻器說明書
  8. 8.00 MB  |  1次下載  |  5 積分
  9. 5PC8011同步開關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊
  10. 0.74 MB   |  1次下載  |  免費(fèi)
  11. 6ES7243E+ES8311音頻錄制與播放電路資料
  12. 0.06 MB   |  1次下載  |  5 積分
  13. 7SDM02 激光測距模塊產(chǎn)品手冊
  14. 0.43 MB   |  1次下載  |  免費(fèi)
  15. 8SDFM 激光測距模塊模組手冊
  16. 0.54 MB   |  1次下載  |  免費(fèi)

本月

  1. 1CH341編程器軟件NeoProgrammer_2.2.0.10
  2. 20.47 MB   |  170次下載  |  1 積分
  3. 22025智能家居傳感器市場分析及創(chuàng)新應(yīng)用
  4. 3.11 MB  |  43次下載  |  免費(fèi)
  5. 3RV1126B系列開發(fā)板產(chǎn)品資料
  6. 4.19 MB  |  18次下載  |  免費(fèi)
  7. 4CH341編程軟件下載
  8. 2.50 MB   |  16次下載  |  5 積分
  9. 5全志系列-米爾基于T153核心板開發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場景
  10. 3.05 MB  |  12次下載  |  免費(fèi)
  11. 6【開源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門學(xué)習(xí)資源包
  12. 10.55 MB  |  8次下載  |  免費(fèi)
  13. 7冷柜-電氣控制系統(tǒng)講解
  14. 13.68 MB  |  4次下載  |  10 積分
  15. 8特斯拉MODEL S車載充電機(jī)主電路回路原理圖
  16. 0.81 MB   |  4次下載  |  3 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233094次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191448次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183356次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81604次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73824次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分