• <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 老馬驛站 閱讀(2465) 評論(0)  編輯 收藏 引用 所屬分類: windowsprotocol
            亚洲欧美日韩中文久久| 久久久久国产一级毛片高清版| 99久久精品免费看国产| 久久久精品人妻无码专区不卡 | 国产精品岛国久久久久| 久久国产福利免费| 久久婷婷五月综合国产尤物app| 国产精品久久久久久久久| 思思久久99热免费精品6| 久久国产精品77777| 亚洲国产精品嫩草影院久久| 99麻豆久久久国产精品免费| 亚洲性久久久影院| 亚洲国产精品久久| 日韩av无码久久精品免费| 久久天天躁狠狠躁夜夜2020老熟妇 | 国产成人久久精品二区三区| 看全色黄大色大片免费久久久| 大香伊人久久精品一区二区| 久久精品国产免费| 久久精品国产亚洲AV香蕉| 久久青青色综合| 精品久久人人妻人人做精品| 久久久国产精品亚洲一区| 久久人做人爽一区二区三区| 久久伊人影视| 久久精品国产欧美日韩| 久久电影网一区| 99久久99久久久精品齐齐| 久久人人妻人人爽人人爽| 77777亚洲午夜久久多喷| 亚洲v国产v天堂a无码久久| 精品久久久久国产免费| 亚洲国产精品久久久久| 99久久国产综合精品五月天喷水 | 成人午夜精品无码区久久| 色99久久久久高潮综合影院| 久久亚洲国产精品123区| 久久久精品久久久久特色影视| 亚洲精品无码久久不卡| 一本大道久久东京热无码AV|