嵌入式系統設計學習周記 網路程式設計

2021-10-05 14:22:37 字數 3012 閱讀 5898

為什麼需要網路通訊

程序間通訊解決的是本機內通訊

網路通訊解決的是任意不同機器通訊

實現網路通訊需要哪些支援

通訊裝置

通訊協議

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 是一種 嵌入機械或電氣系統內部 具有專屬功能的計算機系統 通常要求實時計算效能。被嵌入的系統通常是包含硬體和機械部件的完整裝置。相反,通用計算機如個人計算機則設計靈活,以滿足廣大終端使用者的需求。現在常見的很多裝置都採用嵌入式系統控制。現代嵌入式系統通常是...