五 使用者資料報傳輸(UDP)

2021-09-08 11:37:57 字數 2136 閱讀 3509

1、udp常用的傳送和接收函式

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

int sendto(int sockfd,const

void *msg,int len,unsigned int flags,struct sockaddr *to,int tolen);

sockfd,buf,len的意義和read,write中的引數是一樣的,分別表示套接字描述符,傳送或接收的緩衝區及大小。

recvfrom負責從sockfd接收資料,如果from不是null,那麼在from裡面儲存了資訊**的情況,如果對資訊的**不感興趣,可以將from和fromlen設定為null。

sendto負責向to傳送訊息,此時在to裡面儲存了資訊接收方的詳細資料。

2、例項演示

服務端程式

#include #include 

#include

#include

#include

#include

#include

#include

in.h>#include

#include

#define server_port 8888

#define max_msg_size 1024

void udps_respon(int

sockfd)

}int main(void

) bzero(&addr, sizeof(struct

sockaddr_in));

addr.sin_family =af_inet;

addr.sin_addr.s_addr =htonl(inaddr_any);

addr.sin_port =htons(server_port);

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

)

udps_respon(sockfd);

close(sockfd);

}

客戶端程式

#include #include 

#include

#include

#include

#include

#include

#include

in.h>#include

#include

#define max_buf_size 1024

void udpc_requ(int sockfd, const

struct sockaddr_in *addr, socklen_t len)

buffer[n] = 0

; fprintf(stderr,

"get %s

", buffer);

}}int main(int argc, char **ar**)

if ((port = atoi(ar**[2]))<0

)

sockfd = socket(af_inet, sock_dgram, 0

);

if (sockfd<0

)

/*填充服務端的資料

*/bzero(&addr, sizeof(struct

sockaddr_in));

addr.sin_family =af_inet;

addr.sin_port =htons(port);

if (inet_aton(ar**[1], &addr.sin_addr)<0

)

if (connect(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1

)

udpc_requ(sockfd, &addr, sizeof(struct

sockaddr_in));

close(sockfd);

}

使用者資料報傳輸協議

1.udp提供的服務具有以下主要特徵 1 傳輸資料前無須建立連線,乙個應用程序如果有資料報要傳送就直接傳送,屬於一種無連線的資料傳輸服務。2 不對資料報進行檢查與修改。3 無須等待對方的應答 4 正因為以上的特徵,使其具有較好的實時性,效率高。會出現分組丟失,重複,亂序,應用程式需要負責傳輸可靠性方...

UDP使用者資料報頭格式

介紹 使用者資料報協議是定義用來在互連網路環境中提供包交換的計算機通訊的協議。此協議預設認為網路協議 ip 是其下層協議。此協議提供了向另一使用者程式傳送資訊的最簡便的協議機制。此協議是面向操作的,未提供提交和複製保護。如果應用程式要求可靠的資料傳送應該使用傳輸控制協議 tcp 資料報格式如下 使用...

UDP使用者資料報頭格式

使用者資料報協議是定義用來在互連網路環境中提供包交換的計算機通訊的協議。此協議預設認為網路協議 ip 是其下層協議。此協議提供了向另一使用者程式傳送資訊的最簡便的協議機制。此協議是面向操作的,未提供提交和複製保護。如果應用程式要求可靠的資料傳送應該使用傳輸控制協議 tcp 資料報格式如下 使用者資料...