把Linux下的http client库移植到windows系统下

今天因为工作需要把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。

就这么简单,开心啊!可能漏掉一些细节部分,不过基本会写程序的都应该能解决。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f33d6f2d7a2a6436a806c81e530f00fa.html