codefans

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          程序設計鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          VC編程用UPD協議實現廣播通信

           UPD 是USER DATAGRAM PROTOCAL 的簡稱,是一種在網絡上提供的無連接的傳輸協議。用UDP通信有以下特點:   1、 數據傳輸不用建立連接,所以不可靠;

            2、 數據的發送是面向整個網絡的,任何一臺在局域網內的計算機都可以接收到相同的數據;

            具體實現很簡單,但是現在在網絡上很少看到這方面的代碼;我也參考了VCKBASE上的關于UDP通信的原代碼和一些書籍,寫了這個簡單的客戶端,接收端程序,起到拋磚引玉的作用,希望能給初次接觸UDP之BROADCAST編程的同志一些參考。

            下面就讓我來說一下工作流程, 接收端的程序: 啟動SOCKET庫,版本為2.0

          WSAStartup(0x0202,&wsdata);

            然后賦值給兩個地址,一個用來綁定套接字,一個用來從網絡上的廣播地址接收消息; ......


          a.sin_family=AF_INET;
          a.sin_addr.s_addr=0;
          a.sin_port=htons(5050);

          from.sin_family=AF_INET;
          from.sin_addr.s_addr=INADDR_BROADCAST;
          from.sin_port=htons(5050);
          int fromlength=sizeof(SOCKADDR);
          //用UDP初始化套接字
          s=socket(AF_INET,SOCK_DGRAM,0);
          //設置該套接字為廣播類型,
          setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char FAR *)&optval,sizeof(optval));
          //把該套接字綁定在一個具體的地址上
          bind(s,(sockaddr *)&a,sizeof(sockaddr_in));
          char buf[256];
          while(1)
          { //從廣播地址接收消息,注意用來綁定的地址和接收消息的地址是不一樣的
          recvfrom(s,buf,256,0,(struct sockaddr FAR *)&from,(int FAR *)&fromlength);
          Sleep(2000);
          printf("%s\n",buf);
          ZeroMemory(buf,256);
          }
          .....


            無連接協議不用LISTEN也不用ACCEPT,他直接從廣播地址上接收消息,但我們必須要設置該套接字為廣播類型。

            發送端的程序比較簡單,只要將發送地址改為廣播地址,設置套接字為BROADCAST類型就行,具體實現細節請參見源代碼。

            在VC6。0 WIN 2000下運行通過。

          posted on 2005-08-20 01:59 春雷的博客 閱讀(307) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 灵丘县| 长武县| 四子王旗| 太康县| 松桃| 武鸣县| 清涧县| 昔阳县| 闸北区| 江西省| 子长县| 屏东市| 久治县| 临西县| 尚义县| 绥棱县| 平遥县| 彩票| 米泉市| 竹溪县| 沛县| 花莲市| 黄石市| 延边| 喜德县| 朝阳市| 宜川县| 分宜县| 广元市| 朔州市| 攀枝花市| 磐石市| 宜阳县| 江达县| 石楼县| 永和县| 四平市| 繁昌县| 颍上县| 沂源县| 仙游县|