久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > udp編程步驟詳解,就是如此的簡單

udp編程(cheng)步驟詳(xiang)解,就是(shi)如此的簡(jian)單(dan) 時間:2018-07-19      來源:未(wei)知

UDP協議是User Datagram Protocol的(de)(de)(de)(de)簡稱,是一(yi)種無連接的(de)(de)(de)(de)協議,每個數據報(bao)都(dou)是一(yi)個獨立的(de)(de)(de)(de)信(xin)息(xi),包括(kuo)完整的(de)(de)(de)(de)源地(di)址或(huo)目的(de)(de)(de)(de)地(di)址,它在網絡(luo)上(shang)以(yi)任何(he)可(ke)能(neng)的(de)(de)(de)(de)路徑傳(chuan)往目的(de)(de)(de)(de)地(di),因此(ci)能(neng)否到達(da)目的(de)(de)(de)(de)地(di),到達(da)目的(de)(de)(de)(de)地(di)的(de)(de)(de)(de)時間以(yi)及內(nei)容的(de)(de)(de)(de)正確性都(dou)是不能(neng)被(bei)保證的(de)(de)(de)(de)。

既然有了(le)保證可(ke)靠傳(chuan)(chuan)輸(shu)的(de)(de)(de)(de)TCP協(xie)議,為什么還要(yao)(yao)非可(ke)靠傳(chuan)(chuan)輸(shu)的(de)(de)(de)(de)UDP協(xie)議呢?主要(yao)(yao)的(de)(de)(de)(de)原因(yin)有兩個(ge)。一是(shi)(shi)可(ke)靠的(de)(de)(de)(de)傳(chuan)(chuan)輸(shu)是(shi)(shi)要(yao)(yao)付(fu)出代(dai)價的(de)(de)(de)(de),對(dui)數(shu)據內容(rong)正(zheng)(zheng)確性的(de)(de)(de)(de)檢驗必然占用(yong)計算機的(de)(de)(de)(de)處理(li)時間和(he)網絡的(de)(de)(de)(de)帶寬,因(yin)此(ci)TCP傳(chuan)(chuan)輸(shu)的(de)(de)(de)(de)效率不(bu)如UDP高。二是(shi)(shi)在許多應用(yong)中并不(bu)需(xu)要(yao)(yao)保證嚴格的(de)(de)(de)(de)傳(chuan)(chuan)輸(shu)可(ke)靠性,比如視頻會議系統,并不(bu)要(yao)(yao)求音(yin)頻視頻數(shu)據絕對(dui)的(de)(de)(de)(de)正(zheng)(zheng)確,只(zhi)要(yao)(yao)保證連貫性就可(ke)以了(le),這種情(qing)況下顯然使用(yong)UDP會更合理(li)一些。

UDP編程的服務器端一(yi)般(ban)步驟(zou)是:

1、創建一個socket,用(yong)函數socket();

2、設置(zhi)socket屬(shu)性(xing),用(yong)函數setsockopt();* 可選(xuan)

3、綁定IP地址、端口等信息到socket上,用函數bind();

4、循環接收數(shu)據,用函數(shu)recvfrom();

5、關閉網(wang)絡連接;

UDP編程(cheng)的客戶端(duan)一般步驟(zou)是(shi):

1、創建一個socket,用函數socket();

2、設置socket屬性,用函數setsockopt();* 可選

 3、綁定IP地址、端口等(deng)信息到socket上,用(yong)函數bind();* 可選

4、設置對方的IP地址和端口(kou)等屬性;

5、發(fa)送(song)數(shu)(shu)據,用(yong)函(han)數(shu)(shu)sendto();

6、關閉網(wang)絡連(lian)接;

服務器端程(cheng)序(xu):

#include

#include

#include

#include

#include

#include

#include

#include

#define N 256

int main(int argc, char *argv[])

{

// 0定義變量

int serverfd;

int nbytes; //獲取接收到數(shu)據字節數(shu)

struct sockaddr_in serveraddr, clientaddr;

char buf[N];

int addrlen = sizeof(struct sockaddr_in);

if(argc < 3){

puts("server ");

return -1;

}

// 1創建UDP套接字(zi)--socket

serverfd = socket(AF_INET, SOCK_DGRAM, 0);

if(serverfd < 0){

perror("socket err");

return -1;

}

// 2定義套接(jie)字(zi)地(di)址--sockaddr_in

bzero(&serveraddr, addrlen);

serveraddr.sin_family = AF_INET;

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

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

// 3綁定套接字--bind

if(bind(serverfd, (struct sockaddr*)&serveraddr, addrlen) < 0){

perror("bind err");

return -1;

}

while (1) {

// 4接受來自客戶端消息 recvfrom

recvfrom(serverfd, buf, N, 0, (struct sockaddr*)&clientaddr, &addrlen);

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

// 5回發給客戶(hu)端 sendto

sendto(serverfd, "hello", 6, 0, (struct sockaddr*)&clientaddr, addrlen);

}

// 6關閉套接字(zi)--close

close(serverfd);

}

客戶端程(cheng)序(xu):

#include

#include

#include

#include

#include

#include

#include

#include

#define N 256

int main(int argc, char *argv[])

{

// 0定義變量

int clientfd;

struct sockaddr_in serveraddr;

char buf[N] = {0};

int addrlen = sizeof(struct sockaddr_in);

if(argc < 3){

puts("client ");

return -1;

}

// 1創建UDP套(tao)接字(zi)--socket

clientfd = socket(AF_INET, SOCK_DGRAM, 0);

if(clientfd < 0){

perror("socket err");

return -1;

}

// 2指定服務器地址(zhi)--sockaddr_in

bzero(&serveraddr, addrlen);

serveraddr.sin_family = AF_INET;

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

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

while (1) {

// 3發送消息給服務器 sendto

gets(buf);

sendto(clientfd, buf, N, 0, (struct sockaddr*)&serveraddr, addrlen);

// 4接收服務器的(de)消息 recvfrom

recvfrom(clientfd, buf, N, 0, (struct sockaddr*)&serveraddr, &addrlen);

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

}

// 5關閉套(tao)接字--close

close(clientfd);

}

上一篇:activity工作流,這里讓你快速了解

下一篇:lseek()函數的原型及使用方法,超詳細

熱(re)點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推(tui)薦
前臺專線:010-82525158 企業培訓(xun)洽談專線:010-82525379 院校(xiao)合(he)作洽談(tan)專(zhuan)線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部