成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

UDP協議服務應用源碼分享

網絡 網絡管理
文章中,我們對UDP協議的一類應用進行了分析。首先我們闡述了UDP程序設計的一些簡單步驟,并且分享了一篇UDP Server程序的源碼。

我們知道,UDP協議被規定為不可靠的協議。盡管如此,在一些應用中,UDP協議也比TCP協議有著巨大的優勢。下面我們就來討論下有關內容吧。UDP是一種不可靠的網絡協議,那么還有什么使用價值或必要呢?其實不然,在有些情況下UDP協議可能會變得非常有用。因為UDP具有TCP所望塵莫及的速度優勢。雖然TCP協議中植入了各種安全保障功能,但是在實際執行的過程中會占用大量的系統開銷,無疑使速度受到嚴重的影響。反觀UDP由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大降低了執行時間,使速度得到了保證。

關于UDP協議的最早規范是RFC768,1980年發布。盡管時間已經很長,但是UDP協議仍然繼續在主流應用中發揮著作用。包括視頻電話會議系統在內的許多應用都證明了UDP協議的存在價值。因為相對于可靠性來說,這些應用更加注重實際性能,所以為了獲得更好的使用效果(例如,更高的畫面幀刷新速率)往往可以犧牲一定的可靠性(例如,會面質量)。這就是UDP和TCP兩種協議的權衡之處。根據不同的環境和特點,兩種傳輸協議都將在今后的網絡世界中發揮更加重要的作用。

UDP Server程序

1、編寫UDP Server程序的步驟

(1)使用socket()來建立一個UDP socket,第二個參數為SOCK_DGRAM。

(2)初始化sockaddr_in結構的變量,并賦值。sockaddr_in結構定義:

  1. struct sockaddr_in {  
  2. uint8_t sin_len;  
  3. sa_family_t sin_family;  
  4. in_port_t sin_port;  
  5. struct in_addr sin_addr;  
  6. char sin_zero[8];  
  7. }; 

這里使用“08”作為服務程序的端口,使用“INADDR_ANY”作為綁定的IP地址即任何主機上的地址。

(3)使用bind()把上面的socket和定義的IP地址和端口綁定。這里檢查bind()是否執行成功,如果有錯誤就退出。這樣可以防止服務程序重復運行的問題。

(4)進入無限循環程序,使用recvfrom()進入等待狀態,直到接收到客戶程序發送的數據,就處理收到的數據,并向客戶程序發送反饋。這里是直接把收到的數據發回給客戶程序。

2、udpserv.c程序內容:

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. #define MAXLINE 80  
  8. #define SERV_PORT 8888  
  9. void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)  
  10.  
  11. {  
  12. int n;  
  13. socklen_t len;  
  14. char mesg[MAXLINE];  
  15. for(;;)  
  16. {  
  17. len = clilen;/* waiting for receive data */ 
  18. n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);/* sent data back to client */ 
  19. sendto(sockfd, mesg, n, 0, pcliaddr, len);  
  20. }  
  21. }  
  22.  
  23. int main(void)  
  24. {  
  25. int sockfd;  
  26. struct sockaddr_in servaddr, cliaddr;  
  27. sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */ 
  28. /* init servaddr */ 
  29. bzero(&servaddr, sizeof(servaddr));  
  30. servaddr.sin_family = AF_INET;  
  31. servaddr.sin_addr.s_addr = htonl(INADDR_ANY);  
  32. servaddr.sin_port = htons(SERV_PORT);  
  33. /* bind address and port to socket */ 
  34. if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)  
  35. {  
  36. perror("bind error");  
  37. exit(1);  
  38. }  
  39. do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));  
  40. return 0;  

到這里,我們對UDP協議的一些程序應用進行了簡單的介紹,那么在后續的文章中,我們將會UDP Client程序內容進行一下分析。

責任編輯:佟健 來源: 互聯網
相關推薦

2010-07-06 15:16:34

UDP協議

2010-06-28 15:45:07

UDP協議

2010-07-07 11:17:01

UDP協議應用

2010-07-06 15:46:41

UDP協議

2010-06-28 10:57:07

UDP協議

2010-07-07 11:02:26

TCP UDP協議服務

2010-07-08 14:35:32

UDP協議

2014-06-13 13:47:31

UDP

2010-07-08 13:06:34

UDP協議

2010-07-12 15:40:24

2010-07-06 15:28:57

UDP協議基礎

2010-07-08 12:58:03

UDP協議

2010-07-12 14:41:35

UDP協議

2020-09-10 09:05:29

UDP服務器Nodejs

2019-09-16 08:33:50

TCP協議UDP

2013-08-01 10:01:02

網絡協議TCP協議UDP協議

2010-07-06 15:43:04

UDP協議

2010-07-08 12:42:34

UDP協議

2010-07-12 11:58:02

Java UDP協議

2010-07-12 21:14:09

UDP協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级片在线 | 日韩欧美中文字幕在线观看 | 视频一区二区在线 | 99精品一级欧美片免费播放 | 欧美黄色一区 | 免费国产一区 | 一区二区视频 | 久久人人网 | 97免费在线观看视频 | 精品久久久久久亚洲精品 | 日韩av手机在线观看 | www亚洲一区 | 久久手机在线视频 | 精精国产xxxx视频在线 | 91免费在线视频 | 动漫www.被爆羞羞av44 | 蜜桃综合在线 | 精品福利在线 | 97国产精品视频人人做人人爱 | 亚洲一页| 日韩一区二区福利视频 | 99九九视频 | 国产精品久久久亚洲 | 中文字幕日韩欧美 | 国产www成人 | a视频在线 | 欧美精品一区二区三区四区 在线 | 亚洲欧美成人影院 | 亚洲一区视频在线 | 一区二区亚洲 | 亚洲免费视频在线观看 | 亚洲成人一二三 | 亚洲一区 中文字幕 | 夜夜夜夜夜夜曰天天天 | 成人h免费观看视频 | 日本不卡免费新一二三区 | 逼逼网| 久久久久久国产 | 男人天堂手机在线视频 | 99热碰| 欧美一区二区免费电影 |