Ejemplo n.º 1
0
Archivo: Server.cs Proyecto: kbacob/ik
        private bool ConnectionManager(TcpClient tcpClient)
        {
            var objStream           = tcpClient.GetStream();
            var boolCloseConnection = false;
            var dateBeginConnection = DateTime.Now;

            objStream.ReadTimeout = intTimeOutSeconds * 1000;

            while (boolCloseConnection == false)
            {
                var strRawClientRequestHeader = SocketWorker.ReadClientData(objStream);

                if (DateTime.Now >= dateBeginConnection.AddSeconds(intTimeOutSeconds))
                {
                    boolCloseConnection = true;
                }

                if (!String.IsNullOrEmpty(strRawClientRequestHeader))
                {
                    var headerRequest = new Request(strRawClientRequestHeader);

                    if (!RequestHeader.Connection(headerRequest.Get(HeaderItem.GetRfcString(HeaderItem.Type.Connection))))
                    {
                        boolCloseConnection = true;
                    }

                    if (boolCloseConnection)
                    {
                        headerRequest.Set(HeaderItem.GetRfcString(HeaderItem.Type.Connection), "close");
                    }
                    headerRequest.Add("ClientIP", tcpClient.Client.RemoteEndPoint.ToString());
                    SocketWorker.Do(ref headerRequest, ref objStream);
                }
                else
                {
                    boolCloseConnection = true;
                }
            }

            return(boolCloseConnection);
        }