Простейший веб сервер: получить запрос и ответить на него без использования страниц

MoteX

И снова здравствуйте! Возникла острая необходимость в написании примитивного веб сервера. Задача стоит перед ним следующая: получить запрос и ответить на него без использования страниц и тд. Выглядит так: Человек зашел на адрес 192.168.2.4/primer - сервер получил команду primer и отвечает ему вводом переменных в качестве текста страницы (буквально пара строк) На форуме уже находил подобные темы, но тут задача более простая. Надеюсь поможете.
7 ответов

MoteX

Попробуй поискать примеры TCP/IP CHAT


MoteX

Насколько я понял это (TCP/IP CHAT) работает с сокетами. Мне же нужен обычный http запрос и вывод на странице текста.


MoteX

http использует порт/сокет 80/8080


MoteX

Возникла острая необходимость в написании примитивного веб сервера.
Насколько я понял, Вам в готовые решения


MoteX

Самый простой вебсервер. Проще уже некуда.
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
 
Public Module WebServer
    
    Public Sub Main()
        ' Слушатель
        Dim objListener As New TcpListener(IPAddress.Any, 80)
        objListener.Start
        ' Бесконечный цикл ожидания соединения клиента
        Do
            Dim objClient As TcpClient = objListener.AcceptTcpClient
            ' Клиентский файловый поток
            Using objStream As Stream = objClient.GetStream
                ' Читать запрос от клиента
                Using objReader As New StreamReader(objStream)
                    Dim strLine As String = objReader.ReadLine
                    Select Case strLine
                        Case "GET /primer HTTP/1.1"
                            ' Сделать /primer
                    End Select
                    ' Отправить клиенту статус 200
                    Using objWriter As New StreamWriter(objStream)
                        objWriter.WriteLine("HTTP/1.1 200 Ok")
                        objWriter.WriteLine()
                    End Using
                End Using
            End Using
            objClient.Close()
        Loop
    End Sub
 
End Module


MoteX

Идеальный вариант) Спасибо! Тогда еще вопрос: допустим я сгенерировал страничку и ответил клиенту ею на запрос. И на страничке есть изображение. Возможно ли как то отправить это изображение клиенту?


MoteX

1. Получить запрос от клиента, например «GET /image.png HTTP/1.1». 2. Отправить клиенту заголовки Content-Type и Content-Length, не забывая отправлять статус 200 или 404, если файл не существует. 3. Отправить vbCrLf (символы перевода строки и возврата каретки отделяют заголовки от тела). 4. Отправить клиенту байты файла с изображением.Заголовок Content-Length и размер файла должны совпадать.