Пример #1
0
        public void Accepted(object sender, SocketAsyncEventArgs e)
        {
            Next.Set();

            SimpleTunnel tunnel = new SimpleTunnel(e.AcceptSocket);

            _tunnelManager.Manage(tunnel);

            Socket mySocket = e.AcceptSocket;

            //将请求转化成字节数组!
            // 为读取数据而准备缓存
            Byte[] bReceive = new Byte[1024];
            int    i        = mySocket.Receive(bReceive, bReceive.Length, 0);

            //转换成字符串类型
            string sBuffer = Encoding.ASCII.GetString(bReceive);

            Console.WriteLine(sBuffer);

            // 查找 "HTTP" 的位置
            int    iStartPos    = sBuffer.IndexOf("HTTP", 1);
            string sHttpVersion = sBuffer.Substring(iStartPos, 8);
            String sMimeType    = "text/html";

            {
                var text    = "Server Say : OK !";
                var cBuffer = Encoding.ASCII.GetBytes(text);
                sBuffer = "";

                sBuffer = sBuffer + sHttpVersion + " 200 OK" + "\r\n";
                sBuffer = sBuffer + "Server: dev.com\r\n";
                sBuffer = sBuffer + "Content-Type: " + sMimeType + "\r\n";
                sBuffer = sBuffer + "Accept-Ranges: bytes\r\n";
                sBuffer = sBuffer + "Content-Length: " + cBuffer.Length + "\r\n\r\n";

                Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer);
                //发送
                e.AcceptSocket.Send(bSendData);
                e.AcceptSocket.Send(cBuffer);
            }
        }