<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; HTA: Мультисокетный WEB сервер в HTA]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=3707&amp;type=atom" />
	<updated>2014-02-02T14:41:37Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=3707</id>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79709#p79709" />
			<content type="html"><![CDATA[<p><span style="color: green"><strong>sergey_kan</strong>, оформите код тегом &quot;code&quot;, как это требуют Правила форума.</span></p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2014-02-02T14:41:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79709#p79709</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=79706#p79706" />
			<content type="html"><![CDATA[<p>на Win7 x32 <br /></p><div class="codebox"><pre><code>GetContentType = WshShell.RegRead(&quot;HKEY_CLASSES_ROOT\.&quot; &amp; ext &amp; &quot;\Content Type&quot;)</code></pre></div><p>выдает ошибку, так как в реестре не оказалось &quot;Content Type&quot; для &quot;.zip&quot; <br />для себя вот так подправил:<br /></p><div class="codebox"><pre><code>Function GetContentType(ext)
    On Error Resume Next
    GetContentType = ContentTypes(ext)
    if GetContentType = &quot;&quot; Then
        GetContentType = WshShell.RegRead(&quot;HKEY_CLASSES_ROOT\.&quot; &amp; ext &amp; &quot;\Content Type&quot;)
        if GetContentType = &quot;&quot; Then GetContentType = &quot;octet/stream&quot;
        ContentTypes(ext) = GetContentType
    End if
        On Error Goto 0
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[sergey_kan]]></name>
			</author>
			<updated>2014-02-02T14:00:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=79706#p79706</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=62807#p62807" />
			<content type="html"><![CDATA[<p>Насчёт ADODB.Stream: у нас есть и assembler-программисты! Никто что-ли не может сварганить какой нибудь ActiveX&#039;ик?</p>]]></content>
			<author>
				<name><![CDATA[Ottiwell_Wood]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26902</uri>
			</author>
			<updated>2012-08-15T18:17:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=62807#p62807</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48158#p48158" />
			<content type="html"><![CDATA[<p>А что именно Вас интересует ? Метод передачи POST применяется очень разносторонне. При передаче текстовых данных это одно, при передаче двоичных данных - другое.</p><p>Вот примеры справочной информации:<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=8233#p8233">http://forum.script-coding.com/viewtopi … 8233#p8233</a><br /><a href="http://www.codenet.ru/webmast/php/HTTP-POST.php#part_3">http://www.codenet.ru/webmast/php/HTTP-POST.php#part_3</a></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2011-05-05T19:28:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48158#p48158</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48151#p48151" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, не могли бы вы описать метод Post?<br />Я хочу добавить графический интерфейс и всё такое...</p>]]></content>
			<author>
				<name><![CDATA[Ottiwell_Wood]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26902</uri>
			</author>
			<updated>2011-05-05T18:43:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48151#p48151</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48009#p48009" />
			<content type="html"><![CDATA[<p>Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Ottiwell_Wood]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26902</uri>
			</author>
			<updated>2011-05-02T07:11:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48009#p48009</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47973#p47973" />
			<content type="html"><![CDATA[<p><strong>alexii</strong> думал об этом, но пример ещё до конца не &quot;допилен&quot;. Совесть не позволяет пихать что попало в святыню. <img src="//forum.script-coding.com/img/smilies/roll.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2011-05-01T04:44:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47973#p47973</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47970#p47970" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>…дабы в дальнейшем материал не пропадал…</p></blockquote></div><p>…стоит помещать в Коллекцию.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-04-30T22:09:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47970#p47970</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47967#p47967" />
			<content type="html"><![CDATA[<p>Прошу прощения. Закрутился на работе. Голова кругом. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Забыл совсем.</p><p>Вот последнее что я ковырял из кода. Сервер с докачкой. Выкладываю &quot;портянкой кода&quot;, дабы в дальнейшем материал не пропадал. Проверить не смог, т.к ОС - Windows 7 x64. Нужен WScript.exe под 32-битную. Ссылку на <strong>MSWINSCK.OCX</strong> не публикую. Администрация против. Рекомендую поискать в интернете.</p><div class="codebox"><pre><code>
Option Explicit

&#039;Константы объекта MSWinsock.Winsock.1
Const sckClosed = 0 	&#039;				Default. Closed 
Const sckOpen = 1 						&#039;Open 
Const sckListening = 2 					&#039;Listening 
Const sckConnectionPending = 3			&#039;Connection pending 
Const sckResolvingHost = 4 				&#039;Resolving host 
Const sckHostResolved = 5 				&#039;Host resolved 
Const sckConnecting = 6 				&#039;Connecting 
Const sckConnected = 7 					&#039;Connected 
Const sckClosing = 8 					&#039;Peer is closing the connection 
Const sckError = 9 						&#039;Error 

&#039;Константы объекта SAPI.spFileStream
Const SSFMOpenForRead = 0 				&#039;Opens an existing file as read-only.
Const SSFMOpenReadWrite = 1 			&#039;Opens an existing file as read-write. Not supported for wav files.
Const SSFMCreate = 2 					&#039;Opens an existing file as read-write. Else, it creates the file then opens it as read-write. Not supported for wav files.
Const SSFMCreateForWrite = 3 			&#039;Creates file even if file exists and so destroys or overwrites the existing file.

Const SSSPTRelativeToStart = 0			&#039;Calculates the stream offset relative from the start of the stream.
Const SSSPTRelativeToCurrentPosition = 1&#039;Calculates the stream offset relative from the current position.
Const SSSPTRelativeToEnd = 2			&#039;Calculates the stream offset relative from the end of the stream.

&#039;Настройки сервера
Dim LocalPort: LocalPort = 81
Dim RootFolderPath: RootFolderPath = &quot;wwwroot&quot;
Dim SocketsCount: SocketsCount = 10
Dim DefaultDocuments: DefaultDocuments = Array(&quot;index.htm&quot;,&quot;index.html&quot;)
Dim ChunkSize: ChunkSize = 204800 &#039;65536
Dim MaxHeaderSize: MaxHeaderSize = 65536 
&#039;Глобальные переменные
Dim FileSystemObject, ExitDo, ScriptFullName, CurrentFolderPath, ContentTypes, WshShell

ReDim Sockets(SocketsCount)

Dim Streams

Initialize

&#039;Процедура инициализации сервера
Sub Initialize()
	Dim FolderExists, TestPath
	Set FileSystemObject = CreateObject(&quot;Scripting.FileSystemObject&quot;)
	
	&#039;Получаем путь до текущего каталога
	CurrentFolderPath = FileSystemObject.GetParentFolderName(WScript.ScriptFullName)
	
	&#039;Проверяем существование корневого каталога сервера
	if Not FileSystemObject.FolderExists(RootFolderPath) Then
		&#039;Если не нашли, то пробуем достроить путь до полный пути в текущем каталоге
		TestPath = FileSystemObject.BuildPath(CurrentFolderPath,RootFolderPath)
		if FileSystemObject.FolderExists(TestPath) Then
			RootFolderPath = TestPath
		Else
			Err.Raise vbObjectError + 1,&quot;&quot;,&quot;Корневой каталог не найден.&quot;
		End if		
	End if
		
	Set Streams = CreateObject(&quot;Scripting.Dictionary&quot;)
	&#039;Инициализируем сокеты
	
	&#039;Создаём слушающий сокет
	Set Sockets(0) = WScript.CreateObject(&quot;MSWinsock.Winsock.1&quot;,&quot;Socket_&quot;)

	&#039;Включаем слушанье порта
	Sockets(0).localPort = 81
	Sockets(0).Listen

	&#039;Создаём отвечающие сокеты
	Dim i
	For i=1 to SocketsCount
		Set Sockets(i) = WScript.CreateObject(&quot;MSWinsock.Winsock.1&quot;,&quot;Socket_&quot;)
	Next

	&#039;Создаём коллекцию типов содержимого
	Set ContentTypes = CreateObject(&quot;Scripting.Dictionary&quot;)
	
	&#039;Создаём объект для чтения реестра
	Set WshShell = CreateObject(&quot;WScript.Shell&quot;)

	&#039;RegisterGlobalObject me

	&#039;Начинаем цикл ядра сервера
	Do
		&#039;Делаем паузу, чтобы не нагружать процессор компьютера.
		WScript.Sleep 100
	Loop Until ExitDo &#039;Err.Number &lt;&gt; 0
End Sub

&#039;Событие получения запроса
Sub Socket_ConnectionRequest(ByVal requestID)
	&#039;On Error Resume Next
	Dim i
	For i = 1 to SocketsCount
		if Sockets(i).State = sckClosed Then 
			Sockets(i).Accept(requestID)
			Exit Sub
		End if
	Next
	if err.Number &lt;&gt; 0 Then AppendToLog &quot;MainSocket_ConnectionRequest &quot; &amp; Err.Description
End Sub

&#039;Событие прихода данных
Sub Socket_DataArrival(ByVal bytesTotal)
	&#039;On Error Resume Next
	Dim RequestData, Headers, HeaderParts, method, url, protocol, FilePath, TestPath, DefaultDocument, File, ExtensionName, NewFileStream, StartPos, EndPos, i, Range, ValueParts, ResponseData, buffer
	&#039;Получаем данные запроса
	me.GetData RequestData, vbString, MaxHeaderSize

	AppendToLog &quot;&lt;-&quot; &amp; vbCrlf &amp; RequestData

	&#039;Разбираем заголовок
	Headers = Split(RequestData,vbCrlf)
	&#039;Проверяем верность формата заголовка
	if Ubound(Headers) &lt; 0 Then 
		me.SendData &quot;HTTP/1.0 400 Bad Request&quot; &amp; vbCrlf &amp; vbCrlf &amp; &quot;400 Bad Request&quot;
		Exit Sub
	End if
	&#039;Получаем первый заголовок
	HeaderParts = Split(Headers(0),&quot; &quot;)
	if Ubound(HeaderParts) &lt; 2 Then 
		me.SendData &quot;HTTP/1.0 400 Bad Request&quot; &amp; vbCrlf &amp; vbCrlf &amp; &quot;400 Bad Request&quot;
		Exit Sub
	End if
	&#039;Получаем метод передачи данных
	method = UCase(HeaderParts(0))
	
	Select Case method
	Case &quot;GET&quot;
	Case &quot;HEAD&quot;
	Case Else
		me.SendData &quot;HTTP/1.0 400 Bad Request&quot; &amp; vbCrlf &amp; vbCrlf &amp; &quot;400 Bad Request&quot;
		Exit Sub
	End Select
	
	&#039;Выделяем url
	url = HeaderParts(1)
	&#039;Получаем протокол
	protocol = HeaderParts(2)
	
	&#039;Проверяем - указано ли имя файла
	if FileSystemObject.GetFileName(url) &lt;&gt; &quot;&quot; Then
		&#039;Достраиваем путь до физического файла на диске
		TestPath = FileSystemObject.BuildPath(RootFolderPath,url)
		&#039;Проверяем существование файла
		if FileSystemObject.FileExists(TestPath) Then FilePath = TestPath
	Else
		For Each DefaultDocument in DefaultDocuments
			TestPath = FileSystemObject.BuildPath(RootFolderPath,DefaultDocument)
			if FileSystemObject.FileExists(TestPath) Then
				FilePath = TestPath
				Exit For
			End if
		Next
	End if
	
	&#039;Если файл не найден
	if FilePath = &quot;&quot; Then
		me.sendData protocol &amp; &quot; 404 Not Found&quot; &amp; vbCrlf &amp; vbCrlf &amp; &quot;404 Not Found&quot;
		Exit Sub
	End if

	Set File = FileSystemObject.getfile(FilePath)
	ExtensionName = LCase(FileSystemObject.GetExtensionName(File.Name))

	Set NewFileStream = New clsFileStream
	NewFileStream.OpenFile File.Path
	Set Streams(me.sockethandle) = NewFileStream
	
	StartPos = 0
	EndPos = File.Size
	&#039;Перебираем заголовки начиная со второго
	For i = 1 to Ubound(Headers)
		&#039;Делим заголовок на части
		HeaderParts = Split(Headers(i),&quot;:&quot;,2)
		&#039;Обрабатываем заголовки
		if Ubound(HeaderParts) = 1 Then
			Select Case LCase(HeaderParts(0))
			Case &quot;range&quot;
				&#039;Ликвидируем пробелы, обрезаем часть bytes= и делим заголовок по &quot;-&quot;
				Range = HeaderParts(1)
				Range = Replace(Range,&quot; &quot;,&quot;&quot;)
				Range = Replace(Range,&quot;bytes=&quot;,&quot;&quot;)
				ValueParts = Split(Range,&quot;-&quot;,2)
				if Ubound(ValueParts) = 1 then
					if isNumeric(ValueParts(0)) Then 
						StartPos = CDbl(ValueParts(0))
						if isNumeric(ValueParts(1)) Then EndPos = CDbl(ValueParts(1))
					End if
				End if
			End Select
		End if
	Next

	&#039;Если требуется выполнить докачку
	if Range &lt;&gt; &quot;&quot; Then
		NewFileStream.Position = EndPos
		NewFileStream.SetEOS
		NewFileStream.Position = StartPos
		ResponseData = protocol &amp; &quot; 206 Partial Content&quot; &amp; vbCrlf &amp; _
					   &quot;Content-Type: &quot; &amp; GetContentType(ExtensionName) &amp; vbCrlf &amp; _
					   &quot;Content-Range: bytes &quot; &amp; StartPos &amp; &quot;-&quot; &amp; EndPos - 1 &amp; &quot;/&quot; &amp;  File.Size &amp; vbCrlf &amp; _
					   &quot;Content-Length: &quot; &amp; EndPos - StartPos &amp; vbCrlf
	Else
		ResponseData = protocol &amp; &quot; 200 OK&quot; &amp; vbCrlf &amp; _
					   &quot;Accept-Ranges: bytes&quot; &amp; vbCrlf &amp; _
					   &quot;Content-Type: &quot; &amp; GetContentType(ExtensionName) &amp; vbCrlf &amp; _
					   &quot;Content-Length: &quot; &amp; EndPos &amp; vbCrlf
	End if

	AppendToLog &quot;-&gt;&quot; &amp; vbCrlf &amp; ResponseData
	
	me.SendData ResponseData &amp; vbCrlf
	NewFileStream.Read buffer, ChunkSize
	me.sendData buffer

	if err.Number &lt;&gt; 0 Then AppendToLog &quot;ProcessRequest &quot; &amp; Err.Description
End Sub

&#039;Событие окончания отправки данных
Sub Socket_SendComplete()
	&#039;On Error Resume Next
	Dim FileStream, Buffer, sockethandle, Stream
	sockethandle = me.sockethandle
	if Streams.Exists(sockethandle) Then
		Set Stream = Streams(sockethandle)
		if me.state = sckClosing or me.state = sckError or Stream.AtEndOfStream Then 
			Stream.Close
			me.Close
			Exit Sub
		End if
		Stream.Read buffer, ChunkSize
		if me.state = sckConnected Then me.sendData buffer
	End if
	if err.Number &lt;&gt; 0 Then AppendToLog &quot;Socket_SendComplete &quot; &amp; Err.Description
End Sub

Sub Socket_SendProgress(ByVal bytesSent, ByVal bytesRemaining)
	&#039;On Error Resume Next
	if err.Number &lt;&gt; 0 Then AppendToLog &quot;Socket_SendProgress &quot; &amp; Err.Description
End Sub

Sub Socket_Error(ByVal Number, Description, ByVal Scode, ByVal Source, ByVal HelpFile, ByVal HelpContext, CancelDisplay)
	&#039;On Error Resume Next
	&#039;AppendToLog &quot;Socket error event&quot;
	&#039;me.Close
	if err.Number &lt;&gt; 0 Then AppendToLog &quot;Socket_Error &quot; &amp; Err.Description
End Sub

Sub Socket_Close()
	Dim sockethandle
	sockethandle = me.sockethandle
	AppendToLog &quot;Socket close event&quot;
	if Streams.Exists(sockethandle) Then Streams(sockethandle).Close
End Sub

&#039;Sub Socket_Connect()

&#039;End Sub


Function GetContentType(ext)
	&#039;On Error Resume Next
	GetContentType = ContentTypes(ext)
	if GetContentType = &quot;&quot; Then
		GetContentType = WshShell.RegRead(&quot;HKEY_CLASSES_ROOT\.&quot; &amp; ext &amp; &quot;\Content Type&quot;)
		if GetContentType = &quot;&quot; Then GetContentType = &quot;octet/stream&quot;
		ContentTypes(ext) = GetContentType
	End if
End Function

&#039;Класс для потокового чтения файлов
Class clsFileStream
    Private spFileStream, mvar_size, mvar_Position, mvar_AtEndOfStream, NumberOfBytes

    &#039;Инициализация класса
    Private Sub Class_Initialize()
        Set spFileStream = CreateObject(&quot;SAPI.spFileStream&quot;)
    End Sub

    &#039;Свойство установки и получения позиции в файле
    Public Property Let Position(byval value)
        mvar_Position = CDbl(spFileStream.Seek(value, SSSPTRelativeToStart))
		If value &gt;= mvar_size Then 
			mvar_AtEndOfStream = True
		Else
			mvar_AtEndOfStream = False
		End if
    End Property

    Public Property Get Position()
        Position = mvar_Position
    End Property

    &#039;Функция открытия файла
    Function OpenFile(FileName)
        On Error Resume Next
        mvar_size = Empty
        mvar_AtEndOfStream = False
        spFileStream.Close
        OpenFile = spFileStream.Open(FileName, SSFMOpenForRead)
        mvar_size = Cdbl(spFileStream.Seek(0, SSSPTRelativeToEnd))
        spFileStream.Seek 0, SSSPTRelativeToStart
    End Function

    &#039;Свойство - размер файла
    Public Property Get Size()
        Size = mvar_size
    End Property
	
	Sub SetEOS
		mvar_size = mvar_Position
	End Sub
	
    &#039;свойство - Флаг окончания данных
    Public Property Get AtEndOfStream()
        &#039;if mvar_Position =&gt; mvar_size Then AtEndOfStream = True 
		AtEndOfStream = mvar_AtEndOfStream
    End Property

    Function Read(buffer, ByVal NumberOfBytes)
		On Error Resume Next
    &#039;    mvar_Position = mvar_Position + NumberOfBytes
        &#039;Если позиция чтения превышает размер файла, то смещаем курсор на допустимую позицию
        If mvar_Position + NumberOfBytes &gt; mvar_size Then
            NumberOfBytes = mvar_size - mvar_Position
            mvar_AtEndOfStream = True
        End If
        mvar_Position = mvar_Position + NumberOfBytes
		Read = spFileStream.Read(buffer, NumberOfBytes)
    End Function
	
	Sub Close
		On Error Resume Next
		spFileStream.Close
	End Sub
End Class

Function AppendToLog(Text)
	Dim FSO
	Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
	FSO.OpenTextFile(FileSystemObject.BuildPath(CurrentFolderPath,&quot;log.txt&quot;),8,True).WriteLine Now &amp; &quot;:&quot; &amp; Text
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2011-04-30T19:38:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47967#p47967</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47964#p47964" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, извините, но куда вы их слили?:/</p>]]></content>
			<author>
				<name><![CDATA[Ottiwell_Wood]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26902</uri>
			</author>
			<updated>2011-04-30T16:56:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47964#p47964</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47869#p47869" />
			<content type="html"><![CDATA[<p><strong>2 Ottiwell_Wood:</strong> С ума сойти. Кому то ещё нужен этот код. <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /> Ок. Сегодня вечерком окажусь дома и исходники с докачкой поищу и солью.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2011-04-27T07:51:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47869#p47869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47811#p47811" />
			<content type="html"><![CDATA[<p>Перезалейте пожалуйста winsock и сервер.</p>]]></content>
			<author>
				<name><![CDATA[Ottiwell_Wood]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26902</uri>
			</author>
			<updated>2011-04-25T17:23:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47811#p47811</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=44363#p44363" />
			<content type="html"><![CDATA[<p>Сервер очень хороший <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />&nbsp; Решил сделать похожее, только на VB6. Кому интересно берите. </p><p>- Тестовый сайт в комплекте, настройки сервера хранятся в cfg файлах.<br />- Мультсокетность<br />- Исполнение скриптов через самописный класс ScriptControl<br />- Журналирование<br />- Работает в трее</p><p><a href="http://zalil.ru/30957643">http://zalil.ru/30957643</a><br /><span style="color: #AAAAAA">обновлено 30 апрель 2011</span></p>]]></content>
			<author>
				<name><![CDATA[VSVLAD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24998</uri>
			</author>
			<updated>2011-01-23T16:48:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=44363#p44363</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=44336#p44336" />
			<content type="html"><![CDATA[<p>Отличная создания идея HTA web server и хорошая реализация VBS, но можно HTA web server реализовать на JS заранее благодарен !!! (Очень нужно)</p>]]></content>
			<author>
				<name><![CDATA[0x3CF]]></name>
			</author>
			<updated>2011-01-23T11:10:16Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=44336#p44336</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: Мультисокетный WEB сервер в HTA]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=30892#p30892" />
			<content type="html"><![CDATA[<p>Мне очень понравилась реализация веб-сервера. Добавил возможность использования серверных&nbsp; скриптов JScript и VBScript, а также использование кириллицы. </p><p>Парсер обрабатывает HTML- страницы с разметкой ASP. Допускается использование нескольких скриптовых языков одновременно. Поддерживается использование не только стандартных тегов: &lt;script language=&quot;jscript&quot; runat=&quot;server&quot; /&gt; и &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot; /&gt;, но и «краткий стиль»: &lt;% %&gt;, &lt;%@ language=&quot;vbscript&quot; %&gt;, &lt;%=&quot;text&quot; %&gt;. В скриптах можно использовать «Response.Write».</p><p>Планирую сделать поддержку объектов ASP и таблицу адресов (вместе c <strong>Xameleon</strong>).</p><p>Архив включает в себя полное описание алгоритма парсинга. <em>Примечание: парсинг ведется только для файлов с расширением .htm</em>.</p><p>Также обратите внимание на файл Parser.wsf. В контейнер &lt;resource id=&quot;ASPContent&quot;&gt; Вы можете поместить содержимое asp и увидеть результат работы в Response.Buffer. </p><p><a href="http://slil.ru/28230091">http://slil.ru/28230091</a></p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2009-11-20T12:18:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=30892#p30892</id>
		</entry>
</feed>
