For x = 1 To UBound(ws1)
If ws1(x).State = 0 Or ws1(x).State = 8 Then
ws1(x).Close
ws1(x).Accept requestID
Exit Sub
End If
Next x
Load ws1(x)
Web сервер.
Есть у кого-нибудь какая-нибудь инфа, о том как на басике написать http сервер( локальный ). ну типа апач. чтобы набираешь в браузере 127.0.0.1 и попадать на оффлайн страничку? Подскажите... заранее спасибо!
требуется два контрола winsock
одному делаешь .listen по 80-му порту (допустим это wlisten)
из другого делаешь массив, т.е. ставишь .index=0 (а это ws1)
дальше, при поступлении соединения, проверяем не закрылись ли у нас существующие соединения, если закрылись - зачем создавать новые, принимаем на существующий сокет, иначе создаем новое соединение.
(этот код в sub wlisten_connection request)
Код:
а дальше работаешь с
Код:
Private Sub ws1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
ws1(index).getdata MyData
End Sub
ws1(index).getdata MyData
End Sub
в зависимости от того, что у тебя в MyData, следует давать соответствующий ответ.
Проще всего узнать команды http - это сделать нечто вроде прокси, и смотреть что куда отсылается, или прочитать reference :)
спасибо... поробую.
........
End If
Next x
Load ws1(x)
ws1(x).accept requestID
А где взять больше инфы по этому вопросу?:eek:
как принимать соедмнение - написано, осталось посмотреть кто-что посылает и на соответствующие запросы давать соответствующие ответы :)
описание протокола HTTP
Не сочтите за бестактность, но нет ли у вас исходника работающего сервера.
:) :) :)
а что ты собираешься из командной строки делать?
также ws1.send <data>
тебе, как серверу, при подключении надо отправить клиенту html страницу, потом последует запрос на мультимедию, отправляешь и ее.
Я хочу чтобы когда в бразуре напечатаешь что-то типа localhost/mainbook.html то содержимое файла очутилось в броузере
Ну так в чем проблемы?
Создаеш в своих шарах нужные папки, кидаеш в них хтмл страницы и все готово. Потом с любого компа в сети заходиш так:
\\Твой.Ип.адрес.с\mainbook.html
В локалке ето работает, сам проверял.
Только у такого споба есть минусы, один из ных: твой <сайт> не найдет ни один поисковик :)
Но если ты хочеш хостинг за пределами твоей сети - надо заплатить не маленькие деньги хостинг провайдеру.
как принимать соедмнение - написано, осталось посмотреть кто-что посылает и на соответствующие запросы давать соответствующие ответы :)
описание протокола HTTP[/QUOTE]
Мне нужна инфа о том как пишутся сервера:) , а то ничего не получается потому что я не могу понять какими путями сервер должен получать от браузера запросы.
через винсокет (winsock)
их надо на форме 2, один слушает 80-порт (http)
второй-на самом деле массив, принимает соединение...
когда идёт коннект, браузер соединяется на указанный адрес по 80-му порту, который ты слушаешь, и принимаешь соединение, он(браузер) говорит тебе "кто он такой", ты ему отвечаешь "кто ты" и скидываешь "index.htm" (ну или другую запрошенную страницу), потом браузер просит скинуть картинки, музыку и т.п., что находится на запршеной странице - скидываешь и это - в принципе всё.
как принимать соединение я писал:
Цитата:
Расскажу в общих чертах:
требуется два контрола winsock
одному делаешь .listen по 80-му порту (допустим это wlisten)
из другого делаешь массив, т.е. ставишь .index=0 (а это ws1)
дальше, при поступлении соединения, проверяем не закрылись ли у нас существующие соединения, если закрылись - зачем создавать новые, принимаем на существующий сокет, иначе создаем новое соединение.
(этот код в sub wlisten_connection request)
требуется два контрола winsock
одному делаешь .listen по 80-му порту (допустим это wlisten)
из другого делаешь массив, т.е. ставишь .index=0 (а это ws1)
дальше, при поступлении соединения, проверяем не закрылись ли у нас существующие соединения, если закрылись - зачем создавать новые, принимаем на существующий сокет, иначе создаем новое соединение.
(этот код в sub wlisten_connection request)
Код:
For x = 1 To UBound(ws1)
If ws1(x).State = 0 Or ws1(x).State = 8 Then
ws1(x).Close
ws1(x).Accept requestID
Exit Sub
End If
Next x
Load ws1(x)
ws1(x).accept requestId
If ws1(x).State = 0 Or ws1(x).State = 8 Then
ws1(x).Close
ws1(x).Accept requestID
Exit Sub
End If
Next x
Load ws1(x)
ws1(x).accept requestId
Цитата:
а дальше работаешь с
Код:
Private Sub ws1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
ws1(index).getdata MyData
End Sub
ws1(index).getdata MyData
End Sub
Цитата:
в зависимости от того, что у тебя в MyData, следует давать соответствующий ответ.
Проще всего узнать команды http - это сделать нечто вроде прокси, и смотреть что куда отсылается.
Проще всего узнать команды http - это сделать нечто вроде прокси, и смотреть что куда отсылается.
Вы знаете очень интересно.:) ;)
Вы знаете очень интересно.:) ;)[/QUOTE]
GetData присваивает ей приходящие данные