Не используйте ни один, и, пожалуйста, также не используйте дерьмо L "...". Используйте UTF-8 для всех строк и конвертируйте их непосредственно перед передачей в API-интерфейсы Microsoft.
просто замените Socket, используя HttpListener . Он легко анализирует HTTP-запрос.
Вот пример:
HttpListener listener = new HttpListener();
// prefix URL at which the listener will listen
listener.Prefixes.Add("http://localhost:8080/");
listener.Start();
Console.WriteLine("Listening...");
while (true)
{
// the GetContext method blocks while waiting for a request.
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
// process the request
// if you want to process request from multiple clients
// concurrently, use ThreadPool to run code following from here
Console.WriteLine("Client IP " + request.UserHostAddress);
// in request.InputStream you have the data client sent
// use context.Response to respond to client
}
Рассматривали ли вы использование класса HttpListener вместо сокета для приема входящих HTTP-запросов? Вместо необработанных данных будет получено HttpListenerRequest объектов. Я нашел эти классы полезными для моделирования веб-сервера.
Вы не можете преобразовать его в HttpWebRequest
или что-то подобное. Просто выбросьте сокет
и используйте вместо него HttpWebRequest
. В противном случае вам придется вручную проанализировать ответ byte []
.