嵌入式課程設計實踐(四) socket

2021-06-22 13:59:10 字數 2443 閱讀 4120

本篇主要內容是

socket

,是本次課設的重點之一,本該非常用心認真的寫一篇分析,可是自己對它的認識還不夠,沒有任何思路,就不寫太多了,就對其整體做個大概的整理吧。

我做的是

udp通訊,故與

udp無關的就不管了=。

= 一、基本函式

client

端本部分在

socket

通訊上的要求有三:(1

)對方的

sockaddr

,結構體

structsockaddr_in their_addr;

their_addr.sin_family= af_inet; // host byte order

their_addr.sin_port= htons(heport); // short, network byte order

their_addr.sin_addr= *((struct in_addr *)he->h_addr);//their address

memset(&(their_addr.sin_zero),'\0', 8); // zero the rest of the struct

(2)

socket

的初始化設定

intsocket(int domain, int type,int protocol)

(3)

sendto()

函式,用來將資料由指定的

socket

傳給對方主機

intsendto ( socket s , const void * msg, int len, unsigned int flags,conststruct sockaddr * to , int tolen ) ;

server

端本部分要求有四:(1

)本機的

sockaddr

,結構體

structsockaddr_in my_addr;

my_addr.sin_family= af_inet; // host byte order

my_addr.sin_port= htons(myport); // short, network byte order

my_addr.sin_addr.s_addr= inaddr_any; // automatically fill with my ip

memset(&(my_addr.sin_zero),'\0', 8); // zero the rest of the struct

(2)

socket

的初始化設定(3

)recvfrom()

函式,用來接收遠端主機經指定的

socket

傳來的資料

ssize_t recvfrom(int sockfd,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen);

(4)

bind()

函式,用來繫結本地的接收埠

int bind(int sockfd, struct sockaddr *my_addr, int addrlen)

這兩個端具體的**我就不貼**了,網上很多。

如果要既有傳送又有接收,那麼就只要把他們兩個整合在一起:

(1)

socket()

初始化; (

2)設定自己的

sockaddr

,my_addr; (

3)設定對方的

sockaddr

,their_addr; (

4)bind()

繫結自己的位址;(5

)sendto() (

6)recvfrom()

//

注意:recvfrom()

在未收島資訊時會一直監聽埠,導致阻塞,所以另一端一定也要相應的設定

recvfrom()

和send()

,這樣才能讓程式順利執行。

另外,在編寫**時,還要注意兩點:

1.

在含有賦值與比較的地方要及時加括號,防止出現出乎意料的錯誤,從而找不到錯誤在何處。

2.在填寫各函式的形參時,一定要注意原函式的資料型別要求,否則也會出現一些不明覺歷的錯誤。

本篇沒有詳細的**,因為前部分的**別處太多了,後部分的**我沒有單獨寫的,只有整合了整個課設內容的**,不合適貼在這,就不發了。

嵌入式課程設計日誌

第二天日誌 姓名 楊戴文 日期 9.11 今日學習任務 在linux作業系統中完成初始化棧,進棧,出棧,判斷棧是否空,獲取棧頂元素,清空棧 今日任務完成情況 老師講解了各種資料結構儲存方式,練習了初始化棧,進棧,出棧,判斷棧是否空,獲取棧頂元素,清空棧。複習了昨天的各種運算子,我是一步步跟著老師走的...

嵌入式課程設計日誌

第四天日誌 姓名 楊戴文 日期 9.13 今日學習任務 編寫乙個關於停車場系統的小專案,要可以成功編譯執行 今日任務完成情況 跟著老師編寫的程式可以成功執行,量500 今日開發收穫 打 速度有所提公升,所犯的錯誤也變少了,對之前的知識點有了更深的印象 今日開發中出現的問題彙總 在編寫程式中少了括號,...

嵌入式課程設計日誌1

姓名 楊青 日期 2018.09.10 今日學習任務 安裝軟體,熟悉嵌入式開發環境 複習c語言的知識 問題彙總 很多c語言方面的知識已遺忘 語法編譯不熟練 今日開發中出現的問題彙總 之前學的c語言的一些命令不記得了,且c語言知識概念模糊 課堂筆記 int 4個位元組 short 2個位元組 doub...