日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建Console应用程序,粘贴一下代码,创建E://MyWebServerRoot//目录,作为虚拟目录,亲自测试通过,

發布時間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建Console应用程序,粘贴一下代码,创建E://MyWebServerRoot//目录,作为虚拟目录,亲自测试通过, 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建Console應用程序,粘貼一下代碼,創建E://MyWebServerRoot//目錄,作為虛擬目錄,親自測試通過,

有一個想法,調用ASP.DLL解析ASP,可是始終沒有找到資料,有待于研究,還有.NET。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WebServer
{
??? using System;
??? using System.IO;
??? using System.Net;
??? using System.Net.Sockets;
??? using System.Text;
??? using System.Threading;


??? class Server
??? {

??????? private TcpListener myListener;
??????? private int port = 8080; // 選者任何閑置端口

??????? //開始兼聽端口
??????? //同時啟動一個兼聽進程
??????? public Server()
??????? {
??????????? try
??????????? {
??????????????? //開始兼聽端口
??????????????? myListener = new TcpListener(port);
??????????????? myListener.Start();
??????????????? Console.WriteLine("Web Server Running... Press ^C to Stop...");
??????????????? //同時啟動一個兼聽進程 'StartListen'
??????????????? Thread th = new Thread(new ThreadStart(StartListen));
??????????????? th.Start();

??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? Console.WriteLine("兼聽端口時發生錯誤 :" + e.ToString());
??????????? }
??????? }
??????? public void SendHeader(string sHttpVersion, string sMIMEHeader, int iTotBytes, string sStatusCode, ref Socket mySocket)
??????? {

??????????? String sBuffer = "";

??????????? if (sMIMEHeader.Length == 0)
??????????? {
??????????????? sMIMEHeader = "text/html"; // 默認 text/html
??????????? }

??????????? sBuffer = sBuffer + sHttpVersion + sStatusCode + "/r/n";
??????????? sBuffer = sBuffer + "Server: cx1193719-b/r/n";
??????????? sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "/r/n";
??????????? sBuffer = sBuffer + "Accept-Ranges: bytes/r/n";
??????????? sBuffer = sBuffer + "Content-Length: " + iTotBytes + "/r/n/r/n";

??????????? Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer);

??????????? SendToBrowser(bSendData, ref mySocket);

??????????? Console.WriteLine("Total Bytes : " + iTotBytes.ToString());

??????? }

??????? public void SendToBrowser(String sData, ref Socket mySocket)
??????? {
??????????? SendToBrowser(Encoding.ASCII.GetBytes(sData), ref mySocket);
??????? }

??????? public void SendToBrowser(Byte[] bSendData, ref Socket mySocket)
??????? {
??????????? int numBytes = 0;

??????????? try
??????????? {
??????????????? if (mySocket.Connected)
??????????????? {
??????????????????? if ((numBytes = mySocket.Send(bSendData, bSendData.Length, 0)) == -1)
??????????????????????? Console.WriteLine("Socket Error cannot Send Packet");
??????????????????? else
??????????????????? {
??????????????????????? Console.WriteLine("No. of bytes send {0}", numBytes);
??????????????????? }
??????????????? }
??????????????? else
??????????????????? Console.WriteLine("連接失敗....");
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? Console.WriteLine("發生錯誤 : {0} ", e);

??????????? }
??????? }
??????? public static void Main()
??????? {
??????????? Server MWS = new Server();
??????? }
??????? public void StartListen()
??????? {

??????????? int iStartPos = 0;
??????????? String sRequest;
??????????? String sDirName;
??????????? String sRequestedFile;
??????????? String sErrorMessage;
??????????? String sLocalDir;
??????????? /注意設定你自己的虛擬目錄/
??????????? String sMyWebServerRoot = "E://MyWebServerRoot//"; //設置你的虛擬目錄
??????????? //
??????????? String sFormattedMessage = "";
??????????? String sResponse = "";
??????????? string sPhysicalFilePath = "";

??????????? while (true)
??????????? {
??????????????? //接受新連接
??????????????? Socket mySocket = myListener.AcceptSocket();

??????????????? Console.WriteLine("Socket Type " + mySocket.SocketType);
??????????????? if (mySocket.Connected)
??????????????? {
??????????????????? Console.WriteLine("/nClient Connected!!/n==================/nCLient IP {0}/n", mySocket.RemoteEndPoint);

??????????????????? Byte[] bReceive = new Byte[1024];
??????????????????? int i = mySocket.Receive(bReceive, bReceive.Length, 0);


??????????????????? //轉換成字符串類型
??????????????????? string sBuffer = Encoding.ASCII.GetString(bReceive);


??????????????????? //只處理"get"請求類型
??????????????????? if (sBuffer.Substring(0, 3) != "GET")
??????????????????? {
??????????????????????? Console.WriteLine("只處理get請求類型..");
??????????????????????? mySocket.Close();
??????????????????????? return;
??????????????????? }

??????????????????? // 查找 "HTTP" 的位置
??????????????????? iStartPos = sBuffer.IndexOf("HTTP", 1);


??????????????????? string sHttpVersion = sBuffer.Substring(iStartPos, 8);


??????????????????? // 得到請求類型和文件目錄文件名
??????????????????? sRequest = sBuffer.Substring(0, iStartPos - 1);

??????????????????? sRequest.Replace("//", "/");


??????????????????? //如果結尾不是文件名也不是以"/"結尾則加"/"
??????????????????? if ((sRequest.IndexOf(".") < 1) && (!sRequest.EndsWith("/")))
??????????????????? {
??????????????????????? sRequest = sRequest + "/";
??????????????????? }


??????????????????? //得帶請求文件名
??????????????????? iStartPos = sRequest.LastIndexOf("/") + 1;
??????????????????? sRequestedFile = sRequest.Substring(iStartPos);


??????????????????? //得到請求文件目錄
??????????????????? sDirName = sRequest.Substring(sRequest.IndexOf("/"), sRequest.LastIndexOf("/") - 3);


??????????????????? //獲取虛擬目錄物理路徑
??????????????????? sLocalDir = sMyWebServerRoot;

??????????????????? Console.WriteLine("請求文件目錄 : " + sLocalDir);

??????????????????? if (sLocalDir.Length == 0)
??????????????????? {
??????????????????????? sErrorMessage = "<H2>Error!! Requested Directory does not exists</H2><Br>";
??????????????????????? SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);
??????????????????????? SendToBrowser(sErrorMessage, ref mySocket);
??????????????????????? mySocket.Close();
??????????????????????? continue;
??????????????????? }


??????????????????? if (sRequestedFile.Length == 0)
??????????????????? {
??????????????????????? // 取得請求文件名
??????????????????????? sRequestedFile = "index.html";
??????????????????? }


??????????????????? /
??????????????????? // 取得請求文件類型(設定為text/html)
??????????????????? /

??????????????????? String sMimeType = "text/html";

??????????????????? sPhysicalFilePath = sLocalDir + sRequestedFile;
??????????????????? Console.WriteLine("請求文件: " + sPhysicalFilePath);


??????????????????? if (File.Exists(sPhysicalFilePath) == false)
??????????????????? {

??????????????????????? sErrorMessage = "<H2>404 Error! File Does Not Exists...</H2>";
??????????????????????? SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);
??????????????????????? SendToBrowser(sErrorMessage, ref mySocket);

??????????????????????? Console.WriteLine(sFormattedMessage);
??????????????????? }

??????????????????? else
??????????????????? {
??????????????????????? int iTotBytes = 0;

??????????????????????? sResponse = "";

??????????????????????? FileStream fs = new FileStream(sPhysicalFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);

??????????????????????? BinaryReader reader = new BinaryReader(fs);
??????????????????????? byte[] bytes = new byte[fs.Length];
??????????????????????? int read;
??????????????????????? while ((read = reader.Read(bytes, 0, bytes.Length)) != 0)
??????????????????????? {
??????????????????????????? sResponse = sResponse + Encoding.ASCII.GetString(bytes, 0, read);

??????????????????????????? iTotBytes = iTotBytes + read;

??????????????????????? }
??????????????????????? reader.Close();
??????????????????????? fs.Close();

??????????????????????? SendHeader(sHttpVersion, sMimeType, iTotBytes, " 200 OK", ref mySocket);
??????????????????????? SendToBrowser(bytes, ref mySocket);
??????????????????????? //mySocket.Send(bytes, bytes.Length,0);

??????????????????? }
??????????????????? mySocket.Close();
??????????????? }
??????????? }
??????? }


??? }

}

總結

以上是生活随笔為你收集整理的创建Console应用程序,粘贴一下代码,创建E://MyWebServerRoot//目录,作为虚拟目录,亲自测试通过,的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。