歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 把Linux下的http client庫移植到windows系統下

把Linux下的http client庫移植到windows系統下

日期:2017/2/28 17:17:11   编辑:Linux教程

今天因為工作需要把linux下面的一個http client庫移植到了windows系統下,沒想到如此簡單。

我改的庫是libghttp,如下是我的改寫步驟:

首先建立一個空的控制台程序,然後把所有的源代碼包含進來,編譯。

編譯會報告找不到頭文件,直接把找不到的頭文件去掉,其中有幾個網絡相關的頭文件去掉之後會報告程序編譯錯誤,把WinSock2.h包含進來就可以編譯通過了。別的還有就是strcasecmp了,使用strcmp替代即可,當然有心情的話也可以自己寫一個函數替代。

不出意外的話編譯就會通過了,鏈接會出現問題。這裡讓人有點暈,其實直接把Ws2_32.lib連接進來即可,這個不是默認鏈接的lib。

寫個測試程序,按照ghttp.h裡面的接口函數,很快就可以構建起來一個http client,程序怎麼寫就不說了。編譯連接,開始調試。

調試第一個碰到的問題就是gethostbyname返回錯誤,折磨了我一陣;上網找資料,呵呵,沒有添加socket初始化調用,程序開始加上WSAStartup,結束加上WSACleanup,解決一個。

繼續調試,write報告問題,大家都知道linux下網絡發送數據使用和文件操作一樣的方式,但是windows不一樣,使用send替換掉write,send多一個參數,填個0即可。

再下來出現的問題大家也許就可以猜到了,有write錯,就一定有read錯,替換成recv,同樣給多的一個參數填0;再就是close了,替換成closesocket。

就這麼簡單,開心啊!可能漏掉一些細節部分,不過基本會寫程序的都應該能解決。

Copyright © Linux教程網 All Rights Reserved