• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-167  評論-8  文章-0  trackbacks-0
            一、緒言
              udp是一種面向非連接,不可靠的通訊協議,相對于tcp來說,雖然可靠性不及,但傳輸效率較高。所以在網絡上仍有很大的用途。這幾日需要了解下udp通訊的過程,上網發現這方面的資料還挺少。于是仔細的翻找了下msdn,基本上搞清楚了udp通訊的過程。做了一個測試的例子。希望對大家有幫助。

            二、udp的通訊過程

            server端: open a socket(socket)--->name the socket(bind)--->send and receive data(sendto recvfrom)--->close socket(closesocket)
            client端: open a socket(socket)---------------------------->send and receive data(sendto recvfrom)--->close socket(closesocket)

              server端無需listen,client端無需connect,因此udp中server和client的區別相對較模糊。只要調用sendto和recvfrom就可以給指定的地址收發數據,但并不保證收發的數據的完整性和可靠性。

            三、示例
              udpserver主要代碼:
             1 void main()
             2 {
             3     SOCKET socket1;
             4 
             5     InitWinsock();
             6     struct sockaddr_in local;
             7     struct sockaddr_in from;
             8     int fromlen =sizeof(from);
             9     local.sin_family=AF_INET;
            10     local.sin_port=htons(1000);             ///監聽端口
            11     local.sin_addr.s_addr=INADDR_ANY;       ///本機
            12 
            13     socket1=socket(AF_INET,SOCK_DGRAM,0);
            14     bind(socket1,(struct sockaddr*)&local,sizeof local);
            15     while (1)
            16     {
            17         char buffer[1024]="\0";
            18         printf("waiting for message from others-------------\n");
            19         if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
            20         {
            21             printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);
            22             ////給cilent發信息
            23             sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen);
            24 
            25         }
            26         Sleep(500);
            27     }
            28     closesocket(socket1);
            29 }

            udpcilent主要代碼:
             1 void main()
             2 {
             3     SOCKET socket1;
             4 
             5     InitWinsock();
             6     struct sockaddr_in server;
             7     int len =sizeof(server);
             8     server.sin_family=AF_INET;
             9     server.sin_port=htons(1000);                      ///server的監聽端口
            10     server.sin_addr.s_addr=inet_addr("168.168.0.10"); ///server的地址 
            11 
            12     socket1=socket(AF_INET,SOCK_DGRAM,0);
            13     while (1)
            14     {
            15         char buffer[1024]="\0";
            16         printf("input message\n");
            17         scanf("%s",buffer);
            18         if (strcmp(buffer,"bye")==0)
            19             break;
            20         if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
            21         {    
            22             if (recvfrom(socket1,
            23                                         buffer,
            24                                         sizeof buffer,
            25                                         0,
            26                                         (struct sockaddr*)&server,&len) != SOCKET_ERROR)
            27                 printf("rece from server:%s\n",buffer);
            28         }        
            29     }
            30     closesocket(socket1);
            31 }
            32 
            四、結束語
              udp通訊比tcp簡單了很多,在數據可靠性不是很高的情況下,有使用的價值。
            posted on 2009-07-23 17:55 老馬驛站 閱讀(2456) 評論(0)  編輯 收藏 引用 所屬分類: windowsprotocol
            欧美黑人又粗又大久久久| 久久久久国产| 九九精品99久久久香蕉| 一级做a爰片久久毛片人呢| 2019久久久高清456| 情人伊人久久综合亚洲| 久久久久久久波多野结衣高潮| 欧美日韩精品久久免费| 国产69精品久久久久9999APGF| 久久人人爽人人爽人人爽| 久久久久一级精品亚洲国产成人综合AV区 | 国产精品久久久天天影视香蕉| 久久综合狠狠综合久久97色| 成人综合久久精品色婷婷| 国产精品久久久亚洲| 伊人久久大香线蕉综合网站| 人人狠狠综合久久亚洲婷婷| 久久亚洲AV无码精品色午夜| 91超碰碰碰碰久久久久久综合| 久久精品国产亚洲av麻豆蜜芽| 狠狠色丁香久久综合五月| 丁香色欲久久久久久综合网| 94久久国产乱子伦精品免费 | 精品久久久久久无码专区| 88久久精品无码一区二区毛片 | AV无码久久久久不卡蜜桃 | 久久精品一区二区三区AV| 国产成人无码精品久久久久免费 | 久久精品人人槡人妻人人玩AV | 久久九九有精品国产23百花影院| 中文字幕久久精品| 国产成人99久久亚洲综合精品| 久久精品国产精品亚洲毛片| 久久经典免费视频| 久久久久久久久波多野高潮| 污污内射久久一区二区欧美日韩 | 国产精品久久久久久影院| 久久国产色av免费看| 无码精品久久一区二区三区| 日韩欧美亚洲国产精品字幕久久久 | 日韩人妻无码精品久久免费一|