感谢支持
我们一直在努力

把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。


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

赞(0) 打赏
转载请注明出处:服务器评测 » 把Linux下的http client库移植到windows系统下
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏