Пример


Скрипт без окна

Скомпилируйте данный пример через AutoIt3 Wrapper и запустите.

Сервер будет открыт на IP адресе 127.0.0.1 на порте 8080. Для завершения работы сервера, нажмите клавишу F1.

 

AutoItSetOption("MustDeclareVars", 1)

#include "Http SC.inc"
#include "Http SC Error.inc"
#include "GelAllIp.au3"

; Объявляем переменные
Global $aServer, $vSendData, $aBanList, $hOptimizationTimer, $fWhile

; Создаем сервер
$aServer = _HttpSC_CreateServer($aBanList, "127.0.0.1", 8080, "My server", 0, @ScriptDir&"\My Server.log")
    If @Error Then Exit MsgBox(16, "CreateServer", _HttpSCError_ConvertError2Text(@Error, @Extended, True)); Ошибка

; Настраиваем сервер
_HttpSC_ConfigServer($aServer, 20, 2, 100)
    If @Error Then
    MsgBox(16, "ConfigServer", _HttpSCError_ConvertError2Text(@Error, @Extended, True)); Ошибка
    _HttpSC_DeleteServer($aServer, $aBanList)
    Exit 2
    EndIF

; Запускаем сервер
_HttpSC_StartServer($aServer, $aBanList)
    If @Error Then
    MsgBox(16, "StartServer", _HttpSCError_ConvertError2Text(@Error, @Extended, True)); Ошибка
    _HttpSC_DeleteServer($aServer, $aBanList)
    Exit 3
    EndIF

; Выводим уведомление
MsgBox(0,"StartServer","Сервер запущен. IP сервера: 127.0.0.1; порт сервера: 8080. Нажмите F1 для выхода!", 5)
$fWhile = 1
HotKeySet("{F1}", "_Exit")
$hOptimizationTimer = TimerInit();  Таймер оптимизации сервера

While $fWhile
    _HttpSC_ServerHandler($aServer, $aBanList, "_GetServerFile", "_Post", "_OtherReqest", "")
    Sleep(250)
    If TimerDiff($hOptimizationTimer) >= 10*60*1000 Then;           10*60*1000 = 10 мин. * 60 сек. * 1000 мсек.
        _HttpSC_ServerOptimization($aServer, 1);            Принудительная оптимизация
        $hOptimizationTimer = TimerInit();          Устанавливаем новый таймер
    EndIF
Wend


HotKeySet("{F1}")

; Останавливаем и удаляем сервер
_HttpSC_DeleteServer($aServer, $aBanList)
    If @Error Then MsgBox(16, "DeleteServer", _HttpSCError_ConvertError2Text(@Error, @Extended, True)); Ошибка
Exit



; Функция обработки GET запроса
Func _GetServerFile($sUrl, $hUserSocket, $sUserIp, $sHttpVer, $Reqest)
    If $sUrl = "/" Then
    $vSendData = '<head>'&@CRLF
    $vSendData &= '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">'&@CRLF
    $vSendData &= '<title>HttpSC</title>'&@CRLF
    $vSendData &= '</head>'&@CRLF
    $vSendData &= '<p align="center"><font size="5"><b>HttpSC</b></font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Состояние: Успех</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Дата: '&@MDAY&"/"&@MON&"/"&@YEAR&'</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Время: '&@HOUR&":"&@MIN&":"&@SEC&'</font></p>'&@CRLF
    $vSendData &= ' <form name="form1" method="post" action="post.php">'&@CRLF
    $vSendData &= ' Введите текст:<br />'&@CRLF
    $vSendData &= ' <textarea name="text" cols="80" rows="10"></textarea>'&@CRLF
    $vSendData &= ' <input name="line"></input>'&@CRLF
    $vSendData &= ' <input name="" type="submit" value="Отправить"/>'&@CRLF
    $vSendData &= ' </form>'&@CRLF
    $vSendData = _HttpSC_CreateAnswer($aServer, $vSendData, "HTTP/1.1", "200 Ok",  _HttpSC_ConvertLastModifiedTime(@YEAR&"/"&@MON&"/"&@MDAY&' '&@HOUR&":"&@MIN&":"&@SEC), "text/html", "")
    Return $vSendData
    Else
    $vSendData = '<head>'&@CRLF
    $vSendData &= '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">'&@CRLF
    $vSendData &= '<title>HttpSC</title>'&@CRLF
    $vSendData &= '</head>'&@CRLF
    $vSendData &= '<p align="center"><font size="5"><b>HttpSC</b></font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Состояние: Ошибка 404</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Дата: '&@MDAY&"/"&@MON&"/"&@YEAR&'</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Время: '&@HOUR&":"&@MIN&":"&@SEC&'</font></p>'&@CRLF
    $vSendData = _HttpSC_CreateAnswer($aServer, $vSendData, "HTTP/1.1", "401 Unauthorized",  "", "text/html", "", "")
    Return $vSendData
    EndIF
EndFunc


Func _OtherReqest($hUserSocket, $sUserIp, $Reqest)
Return ""
EndFunc


Func _Post($sUrl, $hUserSocket, $sUserIp, $sHttpVer, $Reqest)
    $vSendData = '<head>'&@CRLF
    $vSendData &= '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">'&@CRLF
    $vSendData &= '<title>HttpSC</title>'&@CRLF
    $vSendData &= '</head>'&@CRLF
    $vSendData &= '<p align="center"><font size="5"><b>HttpSC</b></font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Состояние (POST): 200 Успех</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Дата: '&@MDAY&"/"&@MON&"/"&@YEAR&'</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">Время: '&@HOUR&":"&@MIN&":"&@SEC&'</font></p>'&@CRLF
    $vSendData &= '<p align="left"><font size="3">POST данные запроса: </br>'&_HttpSC_PostReqestGetData($Reqest)&'</font></p>'&@CRLF
    $vSendData = _HttpSC_CreateAnswer($aServer, $vSendData, "HTTP/1.1", "200 OK",  "", "text/html", "")
    Return $vSendData
EndFunc


Func _Exit()
$fWhile = 0
EndFunc

 

 

См. также

Начало