¡¡¡¡HttpServerÊÇÒ»¿î¸ù¾ÝnodejsµÄhttpÍøÂç·þÎñÆ÷£¬¼òÒ×ÔË×÷һЩ±àÂ룬±ã½ÝÓÖÇáÇÉ£¬ÇáÇáËÉËɾÍÄÜÄÃÏ¡£HttpServerÓÖÐí¶àµÄ²ÎÊýÅäÖ㬿ÉÒÔÂú×ã¿Í»§ÔÚÉÏÃæÔËÐдúÂ룬»º½â¿Í»§ÖØÈΡ£ÄÇüNÈÈÁÒ»¶Ó¸÷λÏÂÝdÓ¦Óã¬ÆÚ´ý¿ÉÒÔ°ïµ½´ó»ï¶ùµÄæ¡£
¡¡¡¡ÔËÐÐÍøÂç·þÎñÆ÷£ºHttpServer.exe-W d:web -H index.html -P 80 -M 10000
¡¡¡¡-W£ºwebÍøÕ¾µÄ¹«²¼Í¾¾¶£¬È磺d:web£¬¼ÙÈç;¾¶ÖÐÓпոñ·û£¬¿ÉÓ¦ÓÃÒýºÅ¡£
¡¡¡¡Èç²»Ö¸¶¨£¬Ôò»áÔÚµ±½ñ·þÎñÏîÄ¿ÔË×÷µÄĿ¼Ï½¨Á¢webĿ¼£¬²¢½è´ËΪwebÍøվĿ¼¡£
¡¡¡¡-H£ºwebÍøÕ¾µÄÊ×Ò³£¬È磺index.html£¬
¡¡¡¡Èç¹û²»Ö¸¶¨Ê×Ò³£¬Ôò±íÃ÷webĿ¼µÄÎļþÃ÷ϸ£¬¿É×öΪ¼òÒ×µÄÎļþÍøÂç·þÎñÆ÷Ó¦Óá£
¡¡¡¡-P£ºweb·þÎñµÄ¶Ë¿Ú£¬È±Ê¡ÖµÎª80¡£
¡¡¡¡-M£º½Ï´ó²¢·¢Á¿£¬È±Ê¡ÖµÎª20000¡£
¡¡¡¡ÆäËûÖ÷Òª²ÎÊý(ºó±ßûÓÐÖµ£¬Ö÷Òª²ÎÊý´æÓÐÔò±íÃ÷ÔÊÐí»òÓ¦ÓÃ)£º
¡¡¡¡-AllowUpload£ºÔÊÐíÌá½»
¡¡¡¡-CacheM£ºÓ¦Óûº´æ(ʵ¼Êº¬Òâ¼ûÒ»¶þ½ÚµÄ"UseCacheMem"×Ö¶ÎÃû)
¡¡¡¡-CacheC£ºÓ¦Óûº´æ(ʵ¼Êº¬Òâ¼ûÒ»¶þ½ÚµÄ"UseCacheClass"×Ö¶ÎÃû)
¡¡¡¡È±Ê¡Öµ¾ÍÊÇÖ¸£¬¼ÙÈç¸ÃÖ¸ÁîÖ÷Òª²ÎÊý²»Ö¸¶¨£¬ÍøÂç·þÎñÆ÷²ÉÓõijõʼÖ÷Òª²ÎÊý¡£
¡¡¡¡HttpServer»¹¿ÉÒÔ¸ù¾ÝÅ䱸Îļþ¿ªÕ¹»ù±¾²ÎÊý£¬Å䱸ÎļþΪHttpServer.ini¡£
¡¡¡¡WebPath£ºwebÍøÕ¾µÄ¹«²¼Í¾¾¶£¬Ï൱ÓÚÃüÁîÐвÎÊý"-W"¡£
¡¡¡¡HomePage£ºwebÍøÕ¾µÄÊ×Ò³£¬Ï൱ÓÚÃüÁîÐвÎÊý"-H"¡£
¡¡¡¡Port£ºweb·þÎñµÄ¶Ë¿Ú£¬Ï൱ÓÚÃüÁîÐвÎÊý"-P"¡£
¡¡¡¡TimeOut£ºÇëÇó³¬Ê±£¬ÆóÒµÃ룬ȱʡֵΪ60Ãë¡£
¡¡¡¡MaxConn£º½Ï´ó²¢·¢Êý£¬Ï൱ÓÚÃüÁîÐвÎÊý"-M"£¬È±Ê¡ÖµÎª20000¡£
¡¡¡¡PostDataPath£ºÌá½»Êý¾ÝÐÅÏ¢µÄ´æ·Å;¾¶£¬È±Ê¡ÖµÎªÄ¿Ç°¿Í»§µÄtempĿ¼¡£
¡¡¡¡1¡¢Ó¦ÓÃÇé¾°Ò»£º¿Í»§ÔÚÌá½»Îļþʱ£¬Ìá½»Îļþ´¢´æµÄÁÙʱÐÔ;¾¶;
¡¡¡¡2¡¢Ó¦ÓÃÇé¾°¶þ£ºpostÒªÇóʱ£¬¼ÙÈç¿Í»§postÊý¾ÝÐÅÏ¢¹ý´ó£¬³¬³ö"MaxPostCacheFileSize"×Ö¶ÎÃûÖ¸¶¨µÄãÐÖµ£¬Ôò±äΪÎļþ´¢´æ£¬±ÜÃâÔËÐÐÄÚ´æÓ¦Óùý´ó;
¡¡¡¡MaxPostCacheFileSize£ºPOSTÒªÇóʱ£¬½ÓÊÜPOSTÊý¾ÝÐÅÏ¢cache»º´æµÄ×î¸ßÖµ£¬¼ÙÈ糬³ö¸ÃÖµ£¬Ôò½«»º´æ¿½±´µ½ÎªÎļþ£¬ÆóҵΪ×Ö½ÚÊýBYTE;
¡¡¡¡MaxUploadFileSize£º½Ï´óÌá½»Îļþ¹æ¸ñ£¬ÆóÒµM×Ö½ÚÊý£¬È±Ê¡ÖµÎª2G¡£
¡¡¡¡UseCacheMem£ºÊDz»ÊÇÓ¦Óûº´æ£¬È±Ê¡ÖµÎª0£¬±íÃ÷²»Ó¦Óá£ÒÔʹӦÓûº´æ£¬ÔòÍøÂç·þÎñÆ÷»áÓÃÊÒÄڿռ任•r¼ä£¬ÊÂÏÈ¿ªÍضà¸ö½ÓÁ¬µÄ´óÔËÐÐÄÚ´æ¿é£¬²¢ÇáÔØmallocºÍfreeº¯Êý£¬ÔÚÊÂÏÈ¿ªÍصĴóÔËÐÐÄÚ´æ¿éÖÐÕÒÑ°ÄÜÓõġ°·ºÓéÀÖ»¯¡±ÔËÐÐÄڴ棬½ø¶ø½µµÍÔÚ·Ö²¼Ê½ÏµÍ³Ï¾³£µÄÉêÇë°ìÀíºÍÏû»ÙÔËÐÐÄÚ´æÔì³É µÄËÙÂʼõ»º¡£
¡¡¡¡UseCacheClass£ºÊDz»ÊÇÓ¦Óý¨Öþ½á¹¹(struct/class)»º´æ£¬È±Ê¡ÖµÎª0£¬±íÃ÷²»Ó¦Óá£ÈçÓ¦ÓøÃÖµ£¬ÔòÍøÂç·þÎñÆ÷»áÓÃÊÒÄڿռ任•r¼ä£¬¼´£ºÒÀ¾ÝMaxConnÖ¸¶¨µÄ²¢·¢Êý£¬ÊÂÏÈ¿ªÍسöÖ¸¶¨µÄ´æ´¢¿Õ¼ä£¬ ¼ÙÈçMaxConnΪ2Íò£¬Ôò»á¿ªÍØÏàÆ¥Åä2ÍòÖ»½¨Öþ½á¹¹(struct/class)ÓÃÒÔ´¢´æHTTP¶Ô»°Ê±µÄÇ°ºóÎÄ(context)Êý¾ÝÐÅÏ¢¡£¸úÉÏÃæÒ»Ñù£¬¸ÃÖµÒ²ÊÇÒòΪ½µµÍÔÚ·Ö²¼Ê½ÏµÍ³Ï¾³£µÄÉêÇë°ìÀíºÍÏû»ÙÔËÐÐÄÚ´æÔì³É µÄËÙÂʼõ»º¡£
¡¡¡¡UseMappingFile£ºÊDz»ÊÇÓ¦ÓÃMapping File·½·¨ä¯ÀÀÓ²ÅÌÎļþ£¬È±Ê¡ÖµÎª1£¬±íÃ÷Ó¦Óá£
¡¡¡¡AccessControlAllowOrigin£ºÊDz»ÊÇÔÊÐí¿çÓòÇëÇó£¬È±Ê¡Öµ1£¬±íÃ÷ÔÊÐí¡£
¡¡¡¡PrintMessage£ºÊDz»ÊÇÔÚ¿ØÖÆÃæ°åÝ”³öHTTPÒªÇó£¬È±Ê¡Öµ1£¬±íÃ÷Êä³ö´òÓ¡¡£
¡¡¡¡×¢£º·Ö²¼Ê½ÏµÍ³Ê±¾¡Á¿¹Øµô¿ØÖÆÃæ°åÝ”³ö!!!
¡¡¡¡AllowUpload£ºÊDz»ÊÇÔÊÐíÌá½»£¬È±Ê¡ÖµÎª0£¬±íÃ÷²»ÄÜÔÊÐí¡£
¡¡¡¡AllowCacheFile£ºÊDz»ÊÇÔÊÐíÎļþ»º´æ£¬È±Ê¡ÖµÎª1£¬±íÃ÷ÔÊÐí£¬¸ÃÖµºÏÀíʱ£¬»á¶ÔÎļþ¿ªÕ¹»º´æ£¬·ÀÖ¹·´¸´µÄ¿ªÕ¹Ó²ÅÌÎļþʵ¼Ê²Ù×÷¡£
¡¡¡¡MaxCacheFileSize£º½Ï´ó»º´æµÄÎļþ¹æ¸ñ£¬È±Ê¡ÖµÎª5(ÆóÒµM)£¬µÍÓÚ¸ÃÖµµÄÎļþ»áÔØÈëµ½ÔËÐÐÄÚ´æÖУ¬Êºóä¯ÀÀ½«²»»á´ÓÓ²ÅÌÖÐÔØÈëÖ»ÊÇÁ¢¼´¶ÁÔËÐÐÄÚ´æ¡£
¡¡¡¡HttpServerContent-TypeÖÖÀàÉ趨
¡¡¡¡¸ù¾ÝContentType.ini¸ÃÅ䱸Îļþ£¬¿Í»§¿É¼ÓÉÏÖ¸¶¨ÎļþÖÖÀàµÄContent-TypeÖÖÀ࣬µ±µçÄÔä¯ÀÀÆ÷´Ó·þÎñÆ÷ÔØÈëÎļþʱ£¬
¡¡¡¡ÍøÂç·þÎñÆ÷»áÒÀ¾Ý¸ÃÅ䱸Îļþ»Øµ½Ö¸¶¨µÄContent-Type¸øµçÄÔä¯ÀÀÆ÷¡£
¡¡¡¡Å䱸Îļþ¸ñʽΪÒÔÏ£¬.Îļþºó׺Ãû:Content-Type
¡¡¡¡.mp4:video/mp4£¬±íÃ÷Èç¹ûÊÇmp4Îļþ£¬ÔòContent-TypeΪvideo/mp4¡£
¡¡¡¡.cc:text/plain£¬±íÃ÷Èç¹ûÊÇccÎļþ£¬Ôòcontent-TypeΪtext/plain¡£
¡¡¡¡HttpServerCGIÍø¹ØÉ趨
¡¡¡¡CGIÍø¹ØÉ趨ÔÚCGI.xmlÎļþÖС£¸÷Á¬½Óµãº¬ÒâÒÔÏ£º
¡¡¡¡path£ºCGIÍø¹ØÎļþËùÊôµÄĿ¼£¬Õâ¶ùÊÇȫ;¾¶£¬¸Ã;¾¶²»Ò»¶¨ÔÚ¹«²¼µÄwebĿ¼ÏÂ(ûÓÐwebĿ¼ÏÂÄܸü°²È«ÐÔ)¡£
¡¡¡¡timeout£ºÊµÐÐÍø¹Ø³ÌÐòÁ÷³ÌµÄÇëÇó³¬Ê±£¬ÆóÒµÃ룬ȱʡֵΪ10Ã룬±ÜÃâÓеÄÍø¹Ø³ÌÐòÁ÷³Ì²»³·³ö£¬»ò³¤ÆÚ²»³·³ö¡£
¡¡¡¡cgi£º×ÓÁ¬½Óµã£¬Ã¿Ò»¸öcgi×ÓÁ¬½ÓµãÒâζ×ÅÒ»¸öCGIÍø¹ØÖÖÀà¡£
¡¡¡¡cgi/name£º¸ÃCGIÁ¬½ÓµãÃû×Ö£¬ÀýÈçpython£¬±íÃ÷¸ÃCGIÖеÄÍø¹ØÎļþÊÇpython½Å±¾ÖÆ×÷¡£
¡¡¡¡cgi/exe£ºÊµÐиýű¾ÖÆ×÷µÄÓ¦ÓÃÈí¼þȫ;¾¶£¬È磺c:python25python.exe¡£
¡¡¡¡cgi/action£º»ØÓ¦Å䱸£¬¸ÃÁ¬½ÓµãÒâζ×ÅÒ»¸ö±ØÐë´¦ÖõÄHttpÒªÇóÖ¸Áî(ÔÚ·þÎñÆ÷¶ËÔòΪһ¸öÔËÓÃ)£¬¸ÃÁ¬½ÓµãÓÐÁ½¸ö×Ö¶ÎÃû£¬ÒÔÏ£º
¡¡¡¡cgi/action/appname£ºurlÖеÄÒªÇóÖ¸Áî(ÔËÓÃÃû)£¬È磺python/test1.do
¡¡¡¡cgi/action/filename£º½â¾öÒÔÉÏÒªÇóµÄÎļþ£¬È磺test1.py£¬¸ÃÎļþÎñ±ØÔÚÒÔÉÏpathÁ¬½ÓµãÖ¸¶¨µÄĿ¼ÖС£
¡¡¡¡±íÃ÷£ºµ±¿Í»§ÍÆËÍhttp://server:port/python/test1.doÒªÇóʱ£¬Íø¹Ø»áʵÐÐtest1.py½Å±¾ÖÆ×÷£¬²¢½«½Å±¾ÖÆ×÷ʵÐеĽY¹û·µ»¹¸øµçÄÔä¯ÀÀÆ÷¡£
¡¡¡¡1¡¢QUERY-SRINGÊý¾ÝÐÅÏ¢µÄ´«ËÍ
¡¡¡¡python/test1.do?key1=value1amp;key2=value2
¡¡¡¡"key1=value1amp;key2=value2"»á¸ù¾ÝÃüÁîÐвÎÊýµÄÐÎʽ´«´ï¸øÈë²Î¡£
¡¡¡¡pythonÖÐΪ£ºsys.argv[1]£¬ÏêϸʵÀý£ºtest2.py¡£
¡¡¡¡2¡¢POST-DATAÊý¾ÝÐÅÏ¢µÄ´«ËÍ
¡¡¡¡POSTÊý¾ÝÐÅÏ¢µÄ´«Ë͸ù¾ÝÔØÈë¹æ·¶µÄ¼üÈë»ñµÃ£¬pythonÖÐΪ£ºsys.stdin.readline()£¬ÏêϸʵÀý£ºtest1.py¡£
¡¡¡¡ÁôÒ⣺
¡¡¡¡1¡¢HttpServer›]Óиù¾Ýϵͳ±äÁ¿À´´«ËÍQUERY-STRING;
¡¡¡¡2¡¢CGIÍø¹ØÊý¾ÝÐÅÏ¢»Øµ½Ê±£¬ÍøÂç·þÎñÆ÷»á×ÔÐмÓÉÏContent-Length×Ö¶ÎÃû(ÒÀ¾Ý»Øµ½Êý¾ÝÐÅÏ¢¡°rnrn¡±À´²âËãHTTP»ØӦͷºÍ»ØÓ¦ÌåµÄ·Ö±ð³¤¶Ì);
¡¡¡¡3¡¢¼ÙÈçCGIÍø¹Ø»Øµ½ÐÅÏ¢ÖЛ]ÓÐ"rnrn"À´ÇзÖHTTP»ØӦͷºÍ»ØÓ¦Ì壬ÔòÍøÂç·þÎñÆ÷»á¾õµÃ»ØÓ¦Êý¾ÝÐÅÏ¢ÊÇÃÜÎÄ£¬²¢È«×Ô¶¯¼ÓÉÏÖÖÀàΪ¡°text/plain¡±µÄ»ØӦͷ£¬²¢·µ»¹¸øµçÄÔä¯ÀÀÆ÷;
¡¡¡¡¿Í»§¿É°´ÕÕÐëÒªÅ䱸ºÃ¼¸¸öcgi×ÓÁ¬½Óµã£¬ÓÃÒÔ½â¾ö²»Ò»ÑùÖÖÀàµÄÍø¹Ø³ÌÐòÁ÷³Ì(»ò½Å±¾ÖÆ×÷)¡£cgiÅ䱸µÄ±£´æÁ¬½ÓµãÓÐÁ½¸ö£¬Ò»¸öÊÇbat£¬Ò»¸öÊÇexe¡£Õë¶ÔwindowsϵÄbat¸ñʽ½Å±¾ÖÆ×÷Îļþ£¬ÊDz»ÓÃÖ¸¶¨³ÌÐòÖ´ÐУ¬Ò»ÑùexeÎļþÒ²ÊÇ¡£
¡¡¡¡µãÒ»ÏÂÕâÀïÃâ·ÑÏÂÔØ£¬Íø¹ØʵÀýÎļþÔÚcgi-binĿ¼ÖÐ
¡¡¡¡Íø¹ØÅ䱸Îļþ
¡¡¡¡pythonÍø¹ØÎļþʵÀý£º
¡¡¡¡BATÅú´¦ÀíÃüÁîÍø¹ØÎļþʵÀý£º
¡¡¡¡exeÍø¹ØÎļþʵÀý£º
¡¡¡¡HttpServerÄÚǶÌá½»²å¿Ú
¡¡¡¡²å¿ÚÃû×Ö£ºcommand/upload.do
¡¡¡¡Ó¦ÓÃpostÖ¸Á¿É½«ÎļþÉÏ´«Èëweb¹«²¼Ä¿Â¼¡£
¡¡¡¡¼ÙÈçÒª½«ÎļþÌá½»ÖÁwebĿ¼µÄ×ÓĿ¼ÖУ¬¿É¸ù¾ÝpathÖ÷Òª²ÎÊýÖ¸¶¨£¬ÒÔÏÂ
¡¡¡¡command/upload.do?path=subfolder£¬subfolderΪÏà±ÈÓÚwebĿ¼ÖеÄ×ÓĿ¼¡£
¡¡¡¡½«bug¸ø¸Ï³ö¼ÒÃÅ¿ªÕ¹¾¿¾¹
¡¡¡¡ÌáÉýÓû§ÂúÒâ¶ÈµÄÄÑÌ⣬Ìá¸ß¹Ø¼üµã¸ÐÊÜ
ÊÖ»úºÍ±ðÈËÁÄÌìÁ¬Âó£¿Ð¡±à¸øÄã´øÀ´ÊÖ»úÁ¬ÂóÈí¼þÍƼö¡£Á®ÂõÈí¼þƵµÀ°üÀ¨¸ßÆ·ÖʵÄÁ®ÂõÓ¦Óã¬ÕâÊÇÒ»¸öÔÚÏßÓïÒô»¥¶¯Æ½Ì¨£¬Îª¹ã´óµÄÅóÓÑϲ»¶ÍæÓÎÏ·¡£ÊÖ»úÁªÂõÈí¼þÖ¼ÔÚÈÃÄú¸æ±ð¹Â¶À£¬24СʱÓëÅóÓÑ¿ª·Å·¿¼ä¡£ÕâЩLianmaiÓ¦ÓóÌÐòÖ§³ÖÃâ·Ñ´´½¨¶àÈËÓïÒôÁÄÌìÊÒ¡£Ö®¼ä£¬ÍæºÚ×éÓÎÏ·£¬Íæ¶àÖÖ·½Ê½£¬Í¨¹ýÊÒÄÚÒôÀÖƵµÀºÍÅóÓÑÀ´¼Ç¼Éú»î£¬·ÖÏíÐĵ᣶àÌØÊÖÓÎרÌâΪÄúÌṩÁ¬Âóapp,Æ¥ÅäÁ¬ÂóµÄapp½Ðʲô¡£°²×¿Æ»¹û°æÈí¼þappÒ»Ó¦¾ãÈ«¡£
µ±ÎÒÃdz¤Ê±¼äʹÓüÆËã»úʱ£¬¼ÆËã»ú»áÁôÏÂһЩʹÓùýµÄºÛ¼£¡£Õâ½Ð×ö»º´æ¡£ÓÐÐí¶àÖÖ»º´æ£¬ÀýÈçÀ´×ÔÍøÒ³ºÍ´°¿ÚµÄ»º´æ¡£Èç¹û»º´æûÓж¨ÆÚÇåÀí£¬Ëü½«¼õÂýÄúµÄ»úÆ÷Ëٶȡ£»º´æÇåÀí¹¤¾ß¿ÉÒÔ°ïÖúÄú¾¡¿ÉÄÜ¿ìµØÇåÀíÀ¬»øÎļþ¡£ÔÚËüµÄ°ïÖúÏ£¬Äúϲ»¶³¹µ×Çå½à»úÆ÷²¢Æ½ÎÈÔËÐУ¡Ö÷ÒªÇåÀí£ºËùÓÐÓ¦Óûº´æ¡¢ä¯ÀÀÆ÷»º´æµÈ¡£¶àÌØÈí¼þרÌâΪÄúÌṩ»º´æÇåÀíÈí¼þ,רҵ»º´æÇåÀíÀ¬»øÈí¼þÏÂÔØ,»º´æÇåÀí´óʦ¡£¶àÌØÈí¼þÕ¾Ö»ÌṩÂÌÉ«¡¢ÎÞ¶¾¡¢ÎÞ²å¼þ¡¢ÎÞľÂíµÄ´¿ÂÌÉ«Èí¼þÏÂÔØ¡£
»º´æÊÓƵÎļþºÏ²¢Èí¼þ£¬»º´æÊÓƵÎļþºÏ²¢Èí¼þÊÇС±àΪ´ó¼Ò·ÖÏíµÄÒ»¿î·Ö¶ÎÊÓƵºÏ²¢Èí¼þ£¬Ö§³Ö¸÷´óÊÓƵÈí¼þ×Ô¶¯ÖÇÄÜɨÃèºÏ²¢£¬²Ù×÷¼òµ¥£¬Ê¹Ó÷½±ã£¬¶ÔÓÚ¼ÓÃÜÊÓƵ»¹ÄܽøÐÐÊÊÅä¡£ÐèÒªµÄÅóÓÑ»¶ÓÏÂÔØʹÓá£
¶àÌØÈí¼þרÌâΪÄúÌṩ»º´æÊÓƵºÏ²¢¹¤¾ß,»º´æ·Ö¶ÎÊÓƵºÏ²¢,ÍòÄÜÊÓƵ»º´æºÏ²¢Æ÷°²×¿Æ»¹û°æÈí¼þappÒ»Ó¦¾ãÈ«¡£
¶àÌØÈí¼þվΪÄúÌṩ×ö×îÐÂÇåÀí»º´æÈí¼þרÌâ,ÔÚÕâÀﰲ׿°æÆ»¹û°æµÈÓ¦ÓÃÓ¦Óо¡ÓУ¬ÕÒ×îÐÂÇåÀí»º´æÈí¼þ¾ÍÀ´¶àÌØÈí¼þÕ¾¡£