九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Windows 上靜態(tài)編譯 Libevent 2.0.10 并實(shí)現(xiàn)一個(gè)簡(jiǎn)單 HTTP 服務(wù)器
 [文章作者:張宴 本文版本:v1.0 最后修改:2011.03.30 轉(zhuǎn)載請(qǐng)注明原文鏈接:http://blog.s135.com/libevent_windows/]

  本文介紹了如何在 Windows 操作系統(tǒng)中,利用微軟 Visual Studio 2005 編譯生成 Libevent 2.0.10 靜態(tài)鏈接庫(kù),并利用 Libevent 靜態(tài)鏈接庫(kù),實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 HTTP Web服務(wù)器程序:httpd.exe。

  假設(shè) Visual Studio 2005 的安裝路徑為“D:\Program Files\Microsoft Visual Studio 8\”,Libevent 2.0.10 解壓后的路徑為“D:\libevent-2.0.10-stable”。



  一、編譯生成 Libevent 2.0.10 靜態(tài)鏈接庫(kù)。
  
  1、修改“D:\libevent-2.0.10-stable\event_iocp.c”、“D:\libevent-2.0.10-stable\evthread_win32.c”、“D:\libevent-2.0.10-stable\listener.c”三個(gè)文件,在文件開(kāi)頭分別加上一行:
#define _WIN32_WINNT 0x0500


  2、鼠標(biāo)點(diǎn)擊Windows左下角的【開(kāi)始】-【所有程序】,找到【Microsoft Visual Studio 2005】,執(zhí)行下圖中的腳本:

  



  3、按照下圖中的方法編譯Libevent 2.0.10:

  



  4、生成的“l(fā)ibevent.lib”、“l(fā)ibevent_core.lib”、“l(fā)ibevent_extras.lib”三個(gè)文件就是我們需要的 Libevent 靜態(tài)鏈接庫(kù)。

  




  二、利用 Libevent 靜態(tài)鏈接庫(kù),實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 HTTP Web服務(wù)器程序

  1、打開(kāi) Visual Studio 2005,新建一個(gè)項(xiàng)目

  



  2、選擇在“d:\test”目錄內(nèi)創(chuàng)建一個(gè)“Win32 控制臺(tái)應(yīng)用程序”

  



  3、按照下圖進(jìn)行選擇

  



  4、創(chuàng)建完成項(xiàng)目后,會(huì)自動(dòng)生成“d:\test\httpd\”目錄,在該目錄內(nèi)創(chuàng)建一個(gè)“httpd.c”文件,內(nèi)容如下:
  1. #include <stdio.h>  
  2.   
  3. #define WIN32_LEAN_AND_MEAN  
  4. #include <windows.h>  
  5. #include <winsock2.h>  
  6.   
  7. #include <event.h>  
  8. #include <evhttp.h>  
  9.   
  10. void root_handler(struct evhttp_request *req, void *arg)  
  11. {  
  12.     struct evbuffer *buf = evbuffer_new();  
  13.     if(!buf){  
  14.         puts("failed to create response buffer");  
  15.         return;  
  16.     }  
  17.   
  18.     evbuffer_add_printf(buf, "Hello: %s\n", evhttp_request_uri(req));  
  19.     evhttp_send_reply(req, HTTP_OK, "OK", buf);  
  20. }  
  21.   
  22. void generic_handler(struct evhttp_request *req, void *arg)  
  23. {  
  24.     struct evbuffer *buf = evbuffer_new();  
  25.     if(!buf){  
  26.         puts("failed to create response buffer");  
  27.         return;  
  28.     }  
  29.   
  30.     evbuffer_add_printf(buf, "Requested: %s\n", evhttp_request_uri(req));  
  31.     evhttp_send_reply(req, HTTP_OK, "OK", buf);  
  32. }  
  33.   
  34. int main(int argc, wchar_t* argv[])  
  35. {  
  36.   struct evhttp *httpd;  
  37.   
  38.   WSADATA wsaData;  
  39.   DWORD Ret;  
  40.   if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)  {  
  41.     printf("WSAStartup failed with error %d\n", Ret);  
  42.     return -1;  
  43.   }  
  44.   
  45.     event_init();  
  46.   
  47.     httpd = evhttp_start("0.0.0.0", 8505);  
  48.     if(!httpd){  
  49.     return 1;  
  50.   }  
  51.   
  52.     evhttp_set_cb(httpd, "/", root_handler, NULL);  
  53.     evhttp_set_gencb(httpd, generic_handler, NULL);  
  54.   
  55.   printf("httpd server start OK!\n");  
  56.   
  57.     event_dispatch();  
  58.   
  59.     evhttp_free(httpd);  
  60.   
  61.   WSACleanup();  
  62.     return 0;  
  63. }  


  5、回到 Visual Studio 2005,在左側(cè)的【源文件】中選擇【添加】-【現(xiàn)有項(xiàng)】,將上一步創(chuàng)建的“httpd.c”文件添加進(jìn)來(lái)。

  



  6、在【解決方案“httpd”】上點(diǎn)擊鼠標(biāo)右鍵,選擇【屬性】

  



  7、將【配置】改為“Release”

  



  8、將“D:\libevent-2.0.10-stable\include”整個(gè)目錄復(fù)制到“D:\test\httpd\include”;將“D:\libevent-2.0.10-stable\WIN32-Code”目錄內(nèi)的“tree.h”文件和“event2”子目錄,復(fù)制到“D:\test\httpd\include\”內(nèi);將“D:\libevent-2.0.10-stable\”目錄內(nèi)的所有“*.h”頭文件復(fù)制到“D:\test\httpd\include\”內(nèi)。可以在Windows左下角的【開(kāi)始】-【運(yùn)行】中輸入“cmd”回車,在命令行窗口中執(zhí)行以下命令,完成復(fù)制過(guò)程。
mkdir D:\test\httpd\include\
xcopy /E /H /R D:\libevent-2.0.10-stable\include\* D:\test\httpd\include\
xcopy /E /H /R D:\libevent-2.0.10-stable\WIN32-Code\* D:\test\httpd\include\
xcopy /E /H /R D:\libevent-2.0.10-stable\*.h D:\test\httpd\include\


  


  



  9、回到 Visual Studio 2005,在左側(cè)菜單中【解決方案“httpd”】下面一行【httpd】上點(diǎn)擊鼠標(biāo)郵件,選擇【屬性】,對(duì)每項(xiàng)內(nèi)容進(jìn)行修改。下圖中紅框內(nèi)的數(shù)據(jù)即為修改后的數(shù)據(jù)。

  


  


  


  



  注:下圖中,附加依賴項(xiàng)填寫:
ws2_32.lib wsock32.lib libevent.lib libevent_core.lib libevent_extras.lib

  忽略特定庫(kù)填寫:
libc.lib;msvcrt.lib;libcd.lib;libcmtd.lib;msvcrtd.lib

  



  10、完成設(shè)置后,在【解決方案“httpd”】上點(diǎn)擊鼠標(biāo)右鍵,選擇【生成解決方案】。如果是重新編譯,可以選擇【重新生成解決方案】。生成成功后,“d:\test\httpd\Release”目錄內(nèi)的“httpd.exe”即為生成的可執(zhí)行文件。

  



  11、雙擊“httpd.exe”運(yùn)行后,打開(kāi)瀏覽器,訪問(wèn)“http://127.0.0.1:8505/”,則可以看到以下信息:一個(gè)簡(jiǎn)單的 HTTP Web Server 輸出的內(nèi)容。

  



  12、如果你覺(jué)得像DOS程序一樣的“httpd.exe”可執(zhí)行文件圖標(biāo)不好看、沒(méi)有顯示版本信息,那么,你可以按照下圖步驟,添加ICO圖標(biāo)文件。

  


  



  13、添加版本信息

  


  



  14、大功告成,下面顯示的是帶有自定義圖標(biāo)、版本信息的“httpd.exe”可執(zhí)行程序。

  
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
libevent2 http 客戶端示例
使用 libevent 和 libev 提高網(wǎng)絡(luò)應(yīng)用性能
R7: Evbuffers: utility functionality for buffered IO
windows下編譯及使用libevent(windows7 64位+ VS2010)
libevent在windows下使用步驟詳解
PHP中Libevent HTTP客戶端實(shí)現(xiàn)程序
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服