<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                前面小節一直在介紹Wi-Fi規范方面的內容。從本節開始,我們將向讀者介紹Linux平臺中Wi-Fi編程方面的知識。 * * * * * **提醒**:相比前文而言,本節內容讀起來將顯得較為輕松。但從筆者個人經驗來說,編程只不過是規范的某種實現,掌握規范才是理解無線網絡技術的核心。這也是本書內容組織和編排的指導原則。希望讀者能認真體會。 * * * * * Linux平臺上目前常用的專門針對無線網絡設備編程的API有兩套[40], * 最早的一套API由HP公司員工Jean Tourrilhes于1997年開發,全稱為Linux Wireless Extensions。一般縮寫為wex或wext。這套API使得用戶空間的程序能通過ioctl函數來控制無線網卡驅動。 * 由于利用ioctl開展編程的方式不太符合Linux驅動開發的要求,所以后來Linux又提供了cfg80211和nl80211兩套編程接口用于替代wext。其中,cfg80211用于驅動開發,而nl80211 API供用戶空間進程使用以操作那些利用cfg80211 API開發的無線網卡驅動。 * * * * * **注意**:ioctl不符合Linux驅動開發要求主要體現在: 1. ioctl的原型為int ioctl(int fd, unsigned long cmd, ...),最后三個點代表它支持可變個數的參數。但對于一個經過嚴格定義的系統調用來說,支持可變個數參數的做法似乎顯得有些隨性。 2. ioctl的參數不僅個數不固定,其參數類型也無法通過函數原型來加以說明。這同樣對于一個嚴謹的系統調用來說,也是不可接受的。 * * * * * 本節將重點介紹用戶空間中的Wi-Fi API:wext和nl80211。不過在介紹它們之前,筆者先請讀者思考這樣一個問題: **為什么Wi-Fi需要在用戶空間進行編程呢?** * * * * * **答案**: 目前的無線網卡分為兩種,一種為SoftMAC。這類網卡中,MLME的處理基本上在軟件層(即驅動或用戶空間),這樣可帶來較大的靈活性。另外,一些認證相關的操作,也可由軟件來控制。另一種網卡稱之為FullMAC。這類網卡的MLME全在硬件處理。相比SoftMAC而言,其靈活性很小。所以目前市面上SoftMAC網卡占絕大多數,而cfg80211就僅支持SoftMAC類型的網卡。 * * * * *
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看