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

UDPClient C語言的實(shí)現(xiàn)過程

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們解析了用C語言實(shí)現(xiàn)UDPClient程序的步驟。希望能夠給大家提供一個(gè)參考。那么具體內(nèi)容請(qǐng)大家瀏覽文章內(nèi)容吧。

UDPClient程序是我們經(jīng)常會(huì)使用的程序。很多語言教程中,都有掛怒這方面的應(yīng)用講解。現(xiàn)在我們就來講解一下如何用C語言實(shí)現(xiàn)UDPClient的步驟。現(xiàn)在讓我們仔細(xì)來看看具體的編寫UDPClient程序的步驟

(1)初始化sockaddr_in結(jié)構(gòu)的變量,并賦值。這里使用“8888”作為連接的服務(wù)程序的端口,從命令行參數(shù)讀取IP地址,并且判斷IP地址是否符合要求。

(2)使用socket()來建立一個(gè)UDP socket,第二個(gè)參數(shù)為SOCK_DGRAM。

(3)使用connect()來建立與服務(wù)程序的連接。與TCP協(xié)議不同,UDP的connect()并沒有與服務(wù)程序三次握手。上面說了UDP是非連接的,實(shí)際上也可以是連接的。使用連接的UDP,kernel可以直接返回錯(cuò)誤信息給用戶程序,從而避免由于沒有接收到數(shù)據(jù)而導(dǎo)致調(diào)用recvfrom()一直等待下去,看上去好像客戶程序沒有反應(yīng)一樣。

(4)向服務(wù)程序發(fā)送數(shù)據(jù),因?yàn)槭褂眠B接的UDP,所以使用write()來替代sendto()。這里的數(shù)據(jù)直接從標(biāo)準(zhǔn)輸入讀取用戶輸入。

(5)接收服務(wù)程序發(fā)回的數(shù)據(jù),同樣使用read()來替代recvfrom()。

(6)處理接收到的數(shù)據(jù),這里是直接輸出到標(biāo)準(zhǔn)輸出上。

udpclient.c程序內(nèi)容:

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. #include  
  8. #include  
  9. #define MAXLINE 80  
  10. #define SERV_PORT 8888  
  11. void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen)  
  12. {  
  13. int n;  
  14. char sendline[MAXLINE], recvline[MAXLINE + 1];  
  15. /* connect to server */ 
  16. if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1)  
  17. {  
  18. perror("connect error");  
  19. exit(1);  
  20. }  
  21. while(fgets(sendline, MAXLINE, fp) != NULL)  
  22. {  
  23. /* read a line and send to server */ 
  24. write(sockfd, sendline, strlen(sendline));  
  25. /* receive data from server */ 
  26. n = read(sockfd, recvline, MAXLINE);  
  27. if(n == -1)  
  28. {  
  29. perror("read error");  
  30. exit(1);  
  31. }  
  32. recvline[n] = 0; /* terminate string */ 
  33. fputs(recvline, stdout);  
  34. }  
  35. }  
  36. int main(int argc, char **argv)  
  37. {  
  38. int sockfd;  
  39. struct sockaddr_in srvaddr;  
  40. /* check args */ 
  41. if(argc != 2)  
  42. {  
  43. printf("usage: udpclient \n");  
  44. exit(1);  
  45. }  
  46. /* init servaddr */ 
  47. bzero(&servaddr, sizeof(servaddr));  
  48. servaddr.sin_family = AF_INET;  
  49. servaddr.sin_port = htons(SERV_PORT);  
  50. if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)  
  51. {  
  52. printf("[%s] is not a valid IPaddress\n", argv[1]);  
  53. exit(1);  
  54. }  
  55. sockfd = socket(AF_INET, SOCK_DGRAM, 0);  
  56. do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));  
  57. return 0;  

 

責(zé)任編輯:佟健 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-08 13:32:17

UDPClient

2010-11-22 16:01:08

C++多態(tài)

2009-08-25 11:13:28

C#獲取邏輯硬盤信息

2009-08-26 09:48:48

C#異步套接字

2021-11-19 11:36:42

語言string字符串

2020-10-23 06:56:00

C語言動(dòng)態(tài)字符串

2022-10-21 09:01:41

StudentC++類型

2010-01-15 17:38:37

C++語言

2010-03-11 19:16:32

Python語言

2010-02-05 15:59:26

C++函數(shù)重載

2010-01-20 09:14:49

C語言模塊化

2023-12-07 12:59:46

C語言循環(huán)隊(duì)列代碼

2009-08-25 10:44:50

C#實(shí)現(xiàn)多語言

2013-02-21 17:02:00

C語言

2009-09-02 16:20:22

C#動(dòng)態(tài)創(chuàng)建數(shù)組

2020-04-25 20:18:04

C語言編程匯編語言

2011-07-05 16:57:53

C語言

2020-04-15 11:07:31

C語言對(duì)象思想

2023-10-26 11:03:50

C語言宏定義

2011-07-05 17:07:14

C語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲国产免费 | 日韩欧美在线播放 | 午夜三级在线观看 | 欧美成人精品在线观看 | 男人天堂视频在线观看 | 逼逼网 | 成人亚洲网站 | 免费看国产精品视频 | 亚洲一区精品视频 | 国产精品日韩 | 欧美 日韩 国产 成人 在线 91 | 日本三级黄视频 | 成人免费观看视频 | 中文字幕一区在线观看视频 | 国产激情91久久精品导航 | 欧美日韩三级在线观看 | 欧美理论在线观看 | 久久久国产精品网站 | 日韩影院在线观看 | 国产伦精品一区二区三区高清 | 国产成人综合网 | 国产激情视频在线免费观看 | 亚洲一区二区日韩 | 欧美一区二区免费电影 | 日韩在线免费 | 国产高清在线精品 | 91精品导航 | 欧美激情欧美激情在线五月 | 国产高清精品一区二区三区 | 综合色导航 | 日韩成人高清在线 | 国产亚洲一区二区在线观看 | 精品视频一区二区三区在线观看 | 色综合天天综合网国产成人网 | 一区二区三区免费 | 美女高潮网站 | 午夜电影网 | 久久国内精品 | 毛片久久久| 亚洲最大av| 亚洲精品一区二区三区蜜桃久 |