Server.Request.ProcessRequestHeader C# (CSharp) Méthode

ProcessRequestHeader() private méthode

private ProcessRequestHeader ( char data ) : void
data char
Résultat void
        private void ProcessRequestHeader(char[] data)
        {
            var content = new string(data);
            var indexOf = content.IndexOf('\n');
            var firstLine = content.Substring(0, indexOf);

            // Parse the first line of the request: "GET /path/ HTTP/1.1"
            var words = firstLine.Split(' ');
            Method = words[0];
            URL = words[1];

            // Could look for any further headers in other lines of the request if required (e.g. User-Agent, Cookie)
        }

Same methods

Request::ProcessRequestHeader ( ) : void

Usage Example

        private void StartListening()
        {
            while (true)
            {
                using (IClientSocket clientSocket = new ClientSocket(ListeningSocket.Accept()))
                {
                    Log.Debug("Received request from " + clientSocket.RemoteEndPoint);

                    Log.Debug(DateTime.Now + " " + clientSocket.Available + " request bytes available");

                    int bytesReceived = DetermineBytesReceived(clientSocket.Available);
                    if (bytesReceived > 0)
                    {
                        byte[] buffer = clientSocket.Receive(bytesReceived); // Buffer probably should be larger than this.

                        using (var r = new Request(clientSocket, Encoding.UTF8.GetChars(buffer)))
                        {
                            r.ProcessRequestHeader();
                            Log.Debug(DateTime.Now + " " + r.URL);
                            if (_requestReceived != null) _requestReceived(r);
                        }
                    }
                }

                // I always like to have this in a continuous loop. Helps prevent lock-ups
                Thread.Sleep(10);
            }
        }