UDP原來這樣理解

2021-08-20 21:16:09 字數 2341 閱讀 9440

目錄

什麼是udp

udp報文頭部

實現乙個udp伺服器

udp(user datagram prototocol 使用者資料報協議)

1.它是傳輸層的乙個協議

2.它是乙個無連線的協議(我們可以理解為發簡訊,不需要建立連線就可以傳送資料)

3.它是一種不可靠傳輸(因為它面向無連線,所以必然是一種不可靠的傳輸)

4.面向資料報(可以理解為像冰塊一樣一塊一塊傳送資料)

伺服器 server.c

int main(int argc, char* argv)

//建立socket ipv4 udp 不關心置0

int sockfd = socket(af_inet,sock_dgram,0);

//建立addr_in結構體,並初始化

struct sockaddr_in addr;

addr.sin_family = af_inet;

addr.sin_port = htons(atoi(argv[2]));

//伺服器端口號 atoi函式把字串轉換成整型 htons函式把埠號從主機位元組序轉成網路位元組序

addr.sin_addr.s_addr = inet_addr(argv[1]);

//ip位址轉換 將乙個點分十進位制的數轉化為二進位制 的網路位元組序的ipv4位址

//將伺服器ip和埠號進行繫結

if(bind(sockfd,(struct sockaddr*)&addr,sizeof(addr)) < 0)

//申請快取區收發資料

char buf[1024];

while(1)

}close(sockfd);

return 0;

}

客戶端client.c

int main(int argc,char* argv)

//建立socket ipv4 udp 指定協議 不關心置0

int sockfd = socket(af_inet,sock_dgram,0);

//建立addr_in結構體並初始化

struct sockaddr_in client;

client.sin_family = af_inet;

client.sin_port = htons(atoi(argv[2]));

client.sin_addr.s_addr = inet_addr(argv[1]);

//建立快取區,準備向伺服器傳送資料

printf("please enter : \n");

char buf[1024];

while(1)

buf[s-1] = '\0';

//sendto()函式: 向指定目的地傳送資料

//引數:sockfd 申請的套接字;buf 收到資料存放的快取區 ;strlen(buf) 已經寫在快取區的長度;0 操作方式,不關心置0;client為裝有傳送資料的目的位址快取區(指標); clientlen目的位址快取區長度(整型)

s = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&client,sizeof(client));

if(s < 0)

//sendto()函式:建立乙個接收對端ip&埠資訊的addr_in結構體server

struct sockaddr_in server;

socklen_t len = sizeof(server);

//引數:sockfd 申請的套接字;buf 收到資料存放的快取區 ;sizeof(buf)-1 最多存放的大小;

0 操作方式,不關心置0; &clien 指向攜帶有資料源位址資訊的緩衝區(指標); &clientlen 解析過程中

clientlen大小可能會發生變化,所以傳指標

s = recvfrom(sockfd,buf,sizeof(buf)-1,0,(struct sockaddr*)&server,&len);

if(s < 0)

//buf[s] = '/0';

//把轉化的資料再反轉輸出

printf("ip : %s , port : %d %s\n",inet_ntoa(server.sin_addr),ntohs(server.sin_port),buf);

}//關閉

close(sockfd);

return 0;

}

原來可以這樣

葉子有沒有腳?顯然沒有.可是卻可以飛遍天涯海角,真好.樹兒有沒有眼睛?顯然沒有.可是卻可以仰望天空,真好.岩石有沒有呼吸?顯然沒有.可是卻可以感受陽光,真好 草原有沒有笑臉?顯然沒有.可是卻充滿了收穫的喜悅,真好 人們有沒有魔幻的法力?顯然沒有.可是卻有美妙的夢境,真好.烏雲有沒有眼淚?顯然沒有.可...

原來事務隔離級別可以這樣理解

3.併發的問題 4.隔離級別 5.總結 一系列資料庫操作的集合,主要就是 curd 乙個有規矩的團體,一起行走 事務像原子一樣不可分割 要麼全部成功,不會出現只有部分操作成功 要麼全部失敗,進行回滾,回到最初的狀態,好像什麼也沒發生過 操作們要同生共死 事務 小白給小黑轉賬 事務使資料庫從乙個一致性...

英語原來這樣學!

最近重新學學習了一下sla文件,發現自己總是一不小心就跑偏了,每次都太過浮躁,從來沒有靜下心來思考過到底如何才能學好英語,身邊那麼多可利用的資源,自己卻總是不珍惜,還總是吐槽這個學習材料怎麼這麼難,不好學,實際這一切都是因為我不踏實,沒有做到專注的學習,總是學習英語的時候看手機,上網,這樣一心兩用才...