UDP網路程式設計

2021-07-03 11:52:58 字數 2159 閱讀 3970

基於udp--通訊模型

由上圖可以看出udp通訊的步驟如下:

基於udp-伺服器

1、建立乙個socket,用函式socket();

2、繫結ip位址、埠等資訊到socket上,用函式bind();

3、迴圈接收資料,用函式recvfrom();

4、關閉網路連線;

基於udp-客戶端

1、建立乙個socket,用函式socket();

2、繫結ip位址、埠等資訊到socket上,用函式bind();

3、設定對方的ip位址和埠等屬性;

4、傳送資料,用函式sendto();

5、關閉網路連線;

示例程式如下:

服務端:

#include #include #include #include #include #include #include #define	prot_number			3333

int main(int argc, char *argv)

//填充socket資訊

struct sockaddr_in server_addr, client_addr;

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(prot_number);

server_addr.sin_addr.s_addr = htonl(inaddr_any);

//繫結socket

if((bind(server_fd,(struct sockaddr *)(&server_addr),sizeof(server_addr))) == -1)

char str[1024];

while(1)

else

bzero(str,sizeof(str));

} return 0;

}

客戶端:

#include #include #include #include #include #include #include #define server_port		3333

#define send_buf 1024

int main(int argc, char *argv)

bzero(&server_addr, sizeof(struct sockaddr_in));

//填充服務端socket套結字

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(server_port);

if(0 == inet_aton(argv[1],&server_addr.sin_addr))

bzero(&send_buf, send_buf);

while(1)

} return 0;

}

總結:1、第一次編譯時,struct sockaddr_in server_addr; 這行報錯,報錯內容為 『server_addr』的儲存大小未知。經檢查發現缺少標頭檔案arpa/inet.h。出現乙個警告:隱式宣告與內建函式『bzero』不相容 [預設啟用]。經檢查發現缺少標頭檔案string.h2、在udp通訊中,客戶端可以省略繫結操作。

3、因為省略了客戶端的connect操作,所以客戶端與服務端誰先啟動都可以。(因為是無連線的,一端沒啟動,傳送訊息時另一端沒啟動的話訊息會丟失)

UDP網路程式設計

基於udp 伺服器 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.迴圈接收資料,用recvfrom 4.關閉網路連線。基於udp 客戶端 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到...

網路程式設計 UDP

網路程式設計傳輸層選擇乙個資料控制模式 tcp或者udp,前面我們已經介紹了tcp程式設計,這篇我們簡單的來看看udp程式設計。udp是無連線的不可靠的資料報服務。udp協議在ip協議上增加了復用 分用和差錯檢測功能。udp的特點 a 是無連線的。相比於tcp協議,udp協議在傳送資料前不需要建立連...

網路程式設計 UDP

一 udp協議 1 udp協議 udp與tcp一樣,都屬於運輸層協議,udp為應用層提供不可靠 無連線的 基於資料報的服務。2 udp報頭 3 udp與tcp的比較 tcp 它是一種面向連線的,可靠的,流式服務。udp 它是一種無連線的,不可靠的,資料報服務 tcp的 可靠 tcp協議使用超時重傳 ...