UDP協議網路通訊詳解

2021-09-26 03:20:21 字數 2088 閱讀 7769

基於udp協議的c/s模型

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);

功能:udp協議專用的資料傳送函式

sockfd:套接字描述符

buf:待傳送的緩衝區首位址

len:待傳送的資料位元組數

flags:0阻塞,1不阻塞

dest_addr:目標計算機位址

addrlen:位址結構體的位元組數

返回值:成功傳送的位元組數

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

功能:udp協議專用的資料接收函式

sockfd:套接字描述符

buf:資料儲存位置

len:最大接收位元組數

flags:0阻塞,1不阻塞

src_addr:獲取傳送者的位址

addrlen:設定位址結構體的位元組數

返回值:成功接收的位元組數

程式設計模型:

server client

建立套接字(socket) 建立套接字(socket)

準備位址(本機位址sockaddr_in) 準備位址(目標機位址sockaddr_in)

繫結(bind(sockfd+addr)) …

接收請求(recvfrom) 傳送請求(sendto)

響應請求(sendto) 接收響應(recvfrom)

關閉套接字(close) 關閉套接字(close)

注意:從伺服器到客戶端返回的路線是udp協議自己設計的

客戶端程式在這裡插入**片

#include #include #include #include #include #include typedef struct sockaddr* sp;

int main()

struct sockaddr_in addr = {};

addr.sin_family = af_inet;

addr.sin_port = htons(6677);

addr.sin_addr.s_addr = inet_addr("47.97.229.46");

socklen_t len = sizeof(addr);

char buf[1024] = {};

for(;;)

recvfrom(sockfd,buf,sizeof(buf),0,(sp)&addr,&len);

printf("recv:%s\n",buf);

} close(sockfd);

}

#include#include#include#include#include#include#includeint main()

//準備位址

struct sockaddr_in addr={};

addr.sin_family = af_inet;

addr.sin_port = htons(7782);

addr.sin_addr.s_addr =inet_addr("172.20.10.2");

socklen_t len = sizeof(addr);

//繫結位址

if(bind(sockfd,(struct sockaddr*)&addr,len))

for(;;)

; int fd = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,&len);

printf("%s\n",buf);

if(0 == strcmp("quit",buf))

int fdd = sendto(sockfd,buf,strlen(buf)+1,0,(struct sockaddr*)&addr,len);

} close(sockfd);

}

網路通訊 udp協議

不同的協議就有不同 的插座 socket udp通訊協議的特點 1.將資料極封裝為資料報,面向無連線。2.每個資料報大小限制在64k中 3.因為無連線,所以不可靠 4.因為不需要建立連線,所以速度快 5.udp 通訊是不分服務端與客戶端的,只分傳送端與接收端。比如 物管的對講機,飛q聊天 遊戲.ud...

網路通訊協議 UDP

udp 是user dategram protocol 簡稱 使用者資料報協議 是osi參考模型當中的一種無連線的傳輸層協議,ietf rfc 768是udp的正式規範 udp 和 tcp協議一樣也是用於處理資料報,是一種無連線的傳輸層協議 補充 連線服務 例子 你要寄乙份信件,你要讓你認識的人去送...

linux網路通訊 UDP協議

udp程式設計模型 udp協議是長度固定的,無連線的不可靠報文傳遞,所以不像tcp協議那樣需要在傳送資料之前先建立連線 伺服器建立socket socket 繫結位址 bind 接收資料 recvfrom 傳送資料 sendto 結束連線 close 客戶機 建立socket socket 傳送資料...