Windows上静态编译Libevent2.0.10并实现一个简单HTTP服务器.docx_第1页
Windows上静态编译Libevent2.0.10并实现一个简单HTTP服务器.docx_第2页
Windows上静态编译Libevent2.0.10并实现一个简单HTTP服务器.docx_第3页
Windows上静态编译Libevent2.0.10并实现一个简单HTTP服务器.docx_第4页
Windows上静态编译Libevent2.0.10并实现一个简单HTTP服务器.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011-3-30 08:40 | by 张宴 文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:/libevent_windows/本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe。假设 Visual Studio 2005 的安装路径为“D:Program FilesMicrosoft Visual Studio 8”,Libevent 2.0.10 解压后的路径为“D:libevent-2.0.10-stable”。一、编译生成 Libevent 2.0.10 静态链接库。1、修改“D:libevent-2.0.10-stableevent_iocp.c”、“D:libevent-2.0.10-stableevthread_win32.c”、“D:libevent-2.0.10-stablelistener.c”三个文件,在文件开头分别加上一行:#define _WIN32_WINNT 0x05002、鼠标点击Windows左下角的【开始】-【所有程序】,找到【Microsoft Visual Studio 2005】,执行下图中的脚本:3、按照下图中的方法编译Libevent 2.0.10:4、生成的“libevent.lib”、“libevent_core.lib”、“libevent_extras.lib”三个文件就是我们需要的 Libevent 静态链接库。二、利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序1、打开 Visual Studio 2005,新建一个项目2、选择在“d:test”目录内创建一个“Win32 控制台应用程序”3、按照下图进行选择4、创建完成项目后,会自动生成“d:testhttpd”目录,在该目录内创建一个“httpd.c”文件,内容如下:view plaincopy to clipboardprint?1. #include 2. 3. #defineWIN32_LEAN_AND_MEAN 4. #include 5. #include 6. 7. #include 8. #include 9. 10. voidroot_handler(structevhttp_request*req,void*arg) 11. 12. structevbuffer*buf=evbuffer_new(); 13. if(!buf) 14. puts(failedtocreateresponsebuffer); 15. return; 16. 17. 18. evbuffer_add_printf(buf,Hello:%sn,evhttp_request_uri(req); 19. evhttp_send_reply(req,HTTP_OK,OK,buf); 20. 21. 22. voidgeneric_handler(structevhttp_request*req,void*arg) 23. 24. structevbuffer*buf=evbuffer_new(); 25. if(!buf) 26. puts(failedtocreateresponsebuffer); 27. return; 28. 29. 30. evbuffer_add_printf(buf,Requested:%sn,evhttp_request_uri(req); 31. evhttp_send_reply(req,HTTP_OK,OK,buf); 32. 33. 34. intmain(intargc,wchar_t*argv) 35. 36. structevhttp*httpd; 37. 38. WSADATAwsaData; 39. DWORDRet; 40. if(Ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0) 41. printf(WSAStartupfailedwitherror%dn,Ret); 42. return-1; 43. 44. 45. event_init(); 46. 47. httpd=evhttp_start(,8505); 48. if(!httpd) 49. return1; 50. 51. 52. evhttp_set_cb(httpd,/,root_handler,NULL); 53. evhttp_set_gencb(httpd,generic_handler,NULL); 54. 55. printf(httpdserverstartOK!n); 56. 57. event_dispatch(); 58. 59. evhttp_free(httpd); 60. 61. WSACleanup(); 62. return0; 63. 5、回到 Visual Studio 2005,在左侧的【源文件】中选择【添加】-【现有项】,将上一步创建的“httpd.c”文件添加进来。6、在【解决方案“httpd”】上点击鼠标右键,选择【属性】7、将【配置】改为“Release”8、将“D:libevent-2.0.10-stableinclude”整个目录复制到“D:testhttpdinclude”;将“D:libevent-2.0.10-stableWIN32-Code”目录内的“tree.h”文件和“event2”子目录,复制到“D:testhttpdinclude”内;将“D:libevent-2.0.10-stable”目录内的所有“*.h”头文件复制到“D:testhttpdinclude”内。可以在Windows左下角的【开始】-【运行】中输入“cmd”回车,在命令行窗口中执行以下命令,完成复制过程。mkdir D:testhttpdincludexcopy /E /H /R D:libevent-2.0.10-stableinclude* D:testhttpdincludexcopy /E /H /R D:libevent-2.0.10-stableWIN32-Code* D:testhttpdincludexcopy /E /H /R D:libevent-2.0.10-stable*.h D:testhttpdinclude9、回到 Visual Studio 2005,在左侧菜单中【解决方案“httpd”】下面一行【httpd】上点击鼠标邮件,选择【属性】,对每项内容进行修改。下图中红框内的数据即为修改后的数据。注:下图中,附加依赖项填写:ws2_32.lib wsock32.lib libevent.lib libevent_core.lib libevent_extras.lib忽略特定库填写:libc.lib;msvcrt.lib;libcd.lib;libcmtd.lib;msvcrtd.lib10、完成设置后,在【解决方案“httpd”】上点击鼠标右键,选择【生成解决方案】。如果是重新编译,可以选择【重新生成解决方案】。生成成功后,“d:testhttpdRelease”目录内的“httpd.exe”即为生成的可执行文件。11、双击“httpd.exe”运行后,打开浏览器,访问“:8505/”,则可以看到以下信息:一个简单的 HTTP Web Server 输出的内容。12、如果你觉得像DOS程序一样的“httpd.exe”可执行文件图标不好看、没有显示版本信息,那么,你可以按照下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论