為什麼需要網路通訊
程序間通訊解決的是本機內通訊
網路通訊解決的是任意不同機器通訊
實現網路通訊需要哪些支援
通訊裝置
通訊協議
tcp/ip協議棧
osi七層網路模型、linux四層網路模型
協議棧為什麼要分層
ip位址
實際上是32位二進位制數
公網ip(廣域網通訊)
私網ip(區域網通訊)
子網掩碼的作用
dns協議
網域名稱解析,把網域名稱解析成ip位址
arp協議
把ip位址解析成mac位址(實體地址,全球唯一)(區域網通訊必須通過mac位址)
tcp協議:傳輸控制協議
特點:面向連線、可靠的位元組流傳輸
tcp報文格式
連線方式
建立連線:三次握手
斷開連線:四次揮手
(原因:網路通訊是全雙工的)
udp協議:使用者資料報協議
無連線不可靠傳輸
udp報文格式
協議特點:
c/s:客戶/伺服器模式
b/s:瀏覽器/伺服器模式
套接字作用:傳輸層的檔案描述符
tcp的c/s實現(迴圈伺服器模型)
tcp伺服器實現過程
#include
#include
#include
#include
#include
#include
#define port 35171
intmain()
printf
("socket success!\n");
int opt=1;
setsockopt
(sockfd,sol_socket,so_reuseaddr,
&opt,
sizeof
(opt));
bzero
(&s_addr,
sizeof
(struct sockaddr_in));
s_addr.sin_family = af_inet;
s_addr.sin_port =
htons
(port)
;//位元組序轉換
s_addr.sin_addr.s_addr =
inet_addr
("127.0.0.1");
if(bind
(sockfd,
(struct sockaddr *)(
&s_addr)
,sizeof
(struct sockaddr_in)
)<0)
printf
("bind success!\n");
if(listen
(sockfd,3)
<0)
printf
("listen success!\n");
while(1
)printf
("port = %d ip=%s\n"
,ntohs
(c_addr.sin_port)
,inet_ntoa
(c_addr.sin_addr));
read
(cfd,buffer,
sizeof
(buffer));
printf
("recv = %s\n"
,buffer)
;usleep(2
);write
(cfd,buffer,
strlen
(buffer));
}return0;
}
tcp客戶端實現過程
#include
#include
#include
#include
#include
#include
#define port 35171
intmain()
printf
("client socket success!\n");
bzero
(&s_addr,
sizeof
(struct sockaddr_in));
s_addr.sin_family = af_inet;
s_addr.sin_port =
htons
(port)
;//位元組序轉換
s_addr.sin_addr.s_addr =
inet_addr
("127.0.0.1");
if(connect
(sockfd,
(struct sockaddr *)(
&s_addr)
,sizeof
(struct sockaddr_in)
)<0)
printf
("connect success!\n");
write
(sockfd,
"hello world",12
);char buffer[
1024];
read
(sockfd,buffer,
sizeof
(buffer));
printf
("recv server:%s\n"
,buffer)
;return0;
}
嵌入式系統設計學習周記 嵌入式檔案程式設計
嵌入式linux系統開發 通過核心提供的服務實現相應功能 1.linux系統構成 使用者空間和核心空間 2.分為使用者空間和核心空間的作用 保護核心的訪問安全,使用者不能隨便訪問核心空間 3.系統呼叫 核心提供的安全訪問機制,使使用者空間可以訪問核心空間並獲取服務 4使用者如何傳送系統呼叫 呼叫系統...
嵌入式系統設計學習周記 擴充套件作業
lost found 只允許root 及所屬者讀取建立進入,任何要恢復的檔案都儲存在該目錄下。mnt 系統提供這個目錄是讓使用者臨時掛載別的檔案系統。opt 為所有不屬於預設安裝的軟體和附加包保留的目錄。proc 乙個虛擬的目錄,它是系統記憶體的對映,可以通過直接訪問這個目錄來獲取系統資訊。seli...
嵌入式系統設計
嵌入式系統 embedded system 是一種 嵌入機械或電氣系統內部 具有專屬功能的計算機系統 通常要求實時計算效能。被嵌入的系統通常是包含硬體和機械部件的完整裝置。相反,通用計算機如個人計算機則設計靈活,以滿足廣大終端使用者的需求。現在常見的很多裝置都採用嵌入式系統控制。現代嵌入式系統通常是...