UDP使用講解

2021-08-18 16:42:18 字數 3855 閱讀 3921

udp網路程式設計

內容一、概述

二、基本udp程式設計

三、udp廣播

udp程式設計主要用到的函式 socket() bind() sendto() recvfrom() close()

一、概述

1. udp協議

udp是面向無連線的使用者資料報協議,在傳輸數前不需要先建立連線。

目地主機的運輸層收到udp報文後,不需要給出任何確認

2. udp協議與tcp協議的差異

tcpudp

是否面向連線是否

是否可靠是否

是否廣播否是

效率低高3.如何在tcp和udp之間取捨

1)廣播和多播應用必須使用udp

2)簡單的請求-應答應用程式可以使用udp

3)對於海量資料傳輸不應該使用udp

4.udp的使用場合

dns、nfs、流**傳輸等等

二、基本udp程式設計

客戶端服務端通訊例子

功能:

用於接收資料

引數:

sockfd:套接字

buf: 接收資料緩衝區

nbytes:接收資料緩衝區的大小

flags: 套接字標誌(常為0)

addrlen: from所指內容的長度

注意:

struct sockaddr *from, socklen_t *addrlen

類似於accept函式的最後兩個引數

通過from和addrlen引數存放資料**

可以為null, 表示不關心資料**

返回值:
成功:接收到的字元數

失敗: -1

2.ssize_t  sendto(int sockfd,const void* buf, size_t nbytes,int flags,

const struct sockaddr *to,socklen_t addrlen);

功能:

用於傳送資料

引數:

sockfd:套接字

buf:傳送資料緩衝區

nbytes:傳送資料緩衝區的大小

flags:一般為0

addrlen:to所指向內容的長度

注意:

const struct sockaddr *to,socklen_t addrlen

類似於connect函式的最後兩個引數

通過to和addrlen確定目的位址

傳送乙個0長度的udp資料報是可行的

返回值:

成功:傳送的字元數

失敗: -1

三、udp廣播

1. udp廣播概述

1) 廣播:由一台主機向該主機所在子網內的所有主機傳送資料的方式

2) 廣播只能用udp或原始ip實現,不能用tcp

3) 廣播的用途

單個伺服器與多個客戶主機通訊時減少分組流通

址解析協議(arp)

動態主機配置協議(dhcp)

網路時間協議(ntp)

2. 廣播位址

1)

子網id表示由子網掩碼中1覆蓋的連續位

主機id表示由子網掩碼中0覆蓋的連續位

例如:對於192.168.220.0/24子網,192.168.220.255即為其定向廣播位址

通常路由器不**該廣播

路由器從不**該廣播

通常在dhcp等應用中把該位址當做宿主位址,因為此時客戶主機還不知道所處子網的資訊

3. udp廣播的特點

處於同一子網的所有主機都必須處理資料

udp資料報會沿協議棧向上一直到udp層

侷限於區域網內使用

3. udp廣播的特點

處於同一子網的所有主機都必須處理資料

udp資料報會沿協議棧向上一直到udp層

侷限於區域網內使用

4. 套介面選項

int setsockopt(int sockfd, int level,int optname,const void *optval, socklen_t optlen);

成功執行返回0,否則返回-1

廣播例子:

#include

#include

#include

#include

#include

#include

#include

#include

intmain(

int argc,

char* argv)

if(argc >

1)else

int yes =

1;setsockopt(sockfd,sol_socket,so_broadcast,&yes,

sizeof(yes));

strcpy(buf,

"broadcast success");

int len =

sendto(sockfd,buf,

strlen(buf),

0,\ (

struct sock_addr*)&send_addr,

sizeof(send_addr));

if(len <

0)return0;

}

UDP及TCP通訊對比講解

特點 tcpudp 連線性面向連線 面向無連線 可靠性可靠 不可靠傳輸效率慢快 傳輸模式 資料流資料報 伺服器1.建立socket套接字 2.繫結套接字到ip和埠 3.監聽 listen 將套接字設定為監聽模式 4.接收連線 accept 5.傳送 接收資料 6.關閉socket套接字。客戶機1.建...

理論講解TCP 與UDP的程式設計步驟

tcp程式設計的伺服器端一般步驟是 1 建立乙個socket,用函式socket 2 設定socket屬性,用函式setsockopt 可選 3 繫結ip位址 埠等資訊到socket上,用函式bind 4 開啟監聽,用函式listen 5 接收客戶端上來的連線,用函式accept 6 收發資料,用函...

Linux基礎 UDP通訊講解和實現案例

實現案例 udp是無連線的通訊協議,準備好位址之後可以直接傳送或接收資料。ssize t sendto int sockfd,const void buf,size t len,int flags,const struct sockaddr dest addr,socklen t addrlen 功...