亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > udp編程步驟詳解,就是如此的簡單

udp編程步驟詳解,就是如此的簡單 時(shí)間:2018-07-19      來源:未知

UDP協(xié)議是User Datagram Protocol的簡稱,是一種無連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能被保證的。

既然有了保證可靠傳輸?shù)腡CP協(xié)議,為什么還要非可靠傳輸?shù)腢DP協(xié)議呢?主要的原因有兩個(gè)。一是可靠的傳輸是要付出代價(jià)的,對(duì)數(shù)據(jù)內(nèi)容正確性的檢驗(yàn)必然占用計(jì)算機(jī)的處理時(shí)間和網(wǎng)絡(luò)的帶寬,因此TCP傳輸?shù)男什蝗鏤DP高。二是在許多應(yīng)用中并不需要保證嚴(yán)格的傳輸可靠性,比如視頻會(huì)議系統(tǒng),并不要求音頻視頻數(shù)據(jù)絕對(duì)的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會(huì)更合理一些。

UDP編程的服務(wù)器端一般步驟是:

1、創(chuàng)建一個(gè)socket,用函數(shù)socket();

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

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

4、循環(huán)接收數(shù)據(jù),用函數(shù)recvfrom();

5、關(guān)閉網(wǎng)絡(luò)連接;

UDP編程的客戶端一般步驟是:

1、創(chuàng)建一個(gè)socket,用函數(shù)socket();

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

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

4、設(shè)置對(duì)方的IP地址和端口等屬性;

5、發(fā)送數(shù)據(jù),用函數(shù)sendto();

6、關(guān)閉網(wǎng)絡(luò)連接;

服務(wù)器端程序:

#include

#include

#include

#include

#include

#include

#include

#include

#define N 256

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

{

// 0定義變量

int serverfd;

int nbytes; //獲取接收到數(shù)據(jù)字節(jié)數(shù)

struct sockaddr_in serveraddr, clientaddr;

char buf[N];

int addrlen = sizeof(struct sockaddr_in);

if(argc < 3){

puts("server ");

return -1;

}

// 1創(chuàng)建UDP套接字--socket

serverfd = socket(AF_INET, SOCK_DGRAM, 0);

if(serverfd < 0){

perror("socket err");

return -1;

}

// 2定義套接字地址--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回發(fā)給客戶端 sendto

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

}

// 6關(guān)閉套接字--close

close(serverfd);

}

客戶端程序:

#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創(chuàng)建UDP套接字--socket

clientfd = socket(AF_INET, SOCK_DGRAM, 0);

if(clientfd < 0){

perror("socket err");

return -1;

}

// 2指定服務(wù)器地址--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發(fā)送消息給服務(wù)器 sendto

gets(buf);

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

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

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

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

}

// 5關(guān)閉套接字--close

close(clientfd);

}

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

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

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 九九久久精品这里久久网 | 国产一二三四2022精字窝 | 国产激情视频在线观看首页 | 日本大黄视频 | 国产欧美日韩视频免费61794 | 欧美日韩国产剧情 | 麻豆国产果冻传媒网站入口 | 黄色网址免费在线播放 | 午夜免费观看福利片一区二区三区 | 日本三级香港三级网站 | 国产一区二区三区久久精品小说 | 免费黄色a级片 | 九九九九九九伊人 | 青青草精品在线视频 | 国产精品jizz在线观看网站 | 国产成人福利在线视频播放尤物 | 国产免费又爽又黄又刺激的视频 | 人人爱人人看 | 日本 亚洲 欧美 | 日本www高清| 久草资源站在线 | 日本色高清 | 热99re久久精品精品免费 | 日本不卡视频免费的 | 欧美一级在线 | 国产精品亚洲四区在线观看 | 久久91精品综合国产首页 | 天天摸天天射 | a毛片全部播放免费视频完整18 | 91精品网 | 欧美色偷偷| 国产欧美一区二区精品性色tv | 秋霞在线观看成人高清视频51 | 青娱乐手机免费视频 | 毛片一区 | 久草影音 | 日本中文字幕在线视频站 | 2018天天操夜夜操 | 免费视屏 | 久草资源免费 | 久久成人精品 |