精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#實現Web服務器功能學習經驗總結

開發 后端
這里介紹C#實現Web服務器功能的程序設計,從請求信息中獲取請求類型。如果請求類型是GET,則從請求信息中獲取所訪問的HTML文件名。

學習C#時,經常會遇到Web服務器功能的程序設計問題,這里將介紹C#實現Web服務器功能的程序設計問題的解決方法。

C#實現Web服務器功能的程序設計

根據HTTP協議的作用原理,實現GET請求的Web服務器程序的方法如下:

創建TcpListener類對象,監聽某端口(任意輸入閑置端口 如:8080 )。等待、接受客戶機連接到該端口,得到與客戶機連接的socket;從與socket關聯的輸入流中讀取一行客戶機提交的請求信息,請求信息的格式為:GET 路徑/文件名 HTTP/1.0。從請求信息中獲取請求類型。如果請求類型是GET,則從請求信息中獲取所訪問的HTML文件名。沒有HTML文件名時,則以index.html作為文件名;

如果HTML文件存在,則打開HTML文件,把HTTP頭信息和HTML文件內容通過socket傳回給Web瀏覽器,然后關閉文件。否則發送錯誤信息給Web瀏覽器;關閉與相應Web瀏覽器連接的socket字。

C#實現Web服務器功能的代碼如下:

  1. using System;  
  2. using System.IO;  
  3. using System.Net;  
  4. using System.Net.Sockets;  
  5. using System.Text;  
  6. using System.Threading ;  
  7.  
  8. class MyWebServer  
  9. {  
  10.  
  11. private TcpListener myListener ;  
  12. private int port = 8080 ; // 選者任何閑置端口  
  13.  
  14. //開始兼聽端口  
  15. //同時啟動一個兼聽進程  
  16. public MyWebServer()  
  17. {  
  18. try  
  19. {  
  20. //開始兼聽端口  
  21. myListener = new TcpListener(port) ;  
  22. myListener.Start();  
  23. Console.WriteLine("Web Server Running... Press ^C to Stop...");  
  24. //同時啟動一個兼聽進程 ''StartListen''  
  25. Thread th = new Thread(new ThreadStart(StartListen));  
  26. th.Start() ;  
  27.  
  28. }  
  29. catch(Exception e)  
  30. {  
  31. Console.WriteLine("兼聽端口時發生錯誤 :" +e.ToString());  
  32. }  
  33. }  
  34. public void SendHeader(string sHttpVersion, string sMIMEHeader, 
    int iTotBytes, string sStatusCode, ref Socket mySocket)  
  35. {  
  36.  
  37. String sBuffer = "";  
  38.  
  39. if (sMIMEHeader.Length == 0 )  
  40. {  
  41. sMIMEHeader = "text/html"; // 默認 text/html  
  42. }  
  43.  
  44. sBuffersBuffer = sBuffer + sHttpVersion + sStatusCode + "\r\n";  
  45. sBuffersBuffer = sBuffer + "Server: cx1193719-b\r\n";  
  46. sBuffersBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n";  
  47. sBuffersBuffer = sBuffer + "Accept-Ranges: bytes\r\n";  
  48. sBuffersBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n";  
  49.  
  50. Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer);  
  51.  
  52. SendToBrowser( bSendData, ref mySocket);  
  53.  
  54. Console.WriteLine("Total Bytes : " + iTotBytes.ToString());  
  55.  
  56. }  
  57.  
  58. public void SendToBrowser(String sData, ref Socket mySocket)  
  59. {  
  60. SendToBrowser (Encoding.ASCII.GetBytes(sData), ref mySocket);  
  61. }  
  62.  
  63. public void SendToBrowser(Byte[] bSendData, ref Socket mySocket)  
  64. {  
  65. int numBytes = 0;  
  66.  
  67. try  
  68. {  
  69. if (mySocket.Connected)  
  70. {  
  71. if (( numBytes = mySocket.Send(bSendData, bSendData.Length,0)) == -1)  
  72. Console.WriteLine("Socket Error cannot Send Packet");  
  73. else  
  74. {  
  75. Console.WriteLine("No. of bytes send {0}" , numBytes);  
  76. }  
  77. }  
  78. else  
  79. Console.WriteLine("連接失敗....");  
  80. }  
  81. catch (Exception e)  
  82. {  
  83. Console.WriteLine("發生錯誤 : {0} ", e );  
  84.  
  85. }  
  86. }  
  87. public static void Main()  
  88. {  
  89. MyWebServer MWS = new MyWebServer();  
  90. }  
  91. public void StartListen()  
  92. {  
  93.  
  94. int iStartPos = 0;  
  95. String sRequest;  
  96. String sDirName;  
  97. String sRequestedFile;  
  98. String sErrorMessage;  
  99. String sLocalDir;  
  100.  
  101. String sMyWebServerRoot = "E:\\MyWebServerRoot\\"; //設置你的虛擬目錄  
  102.  
  103. String sPhysicalFilePath = "";  
  104. String sFormattedMessage = "";  
  105. String sResponse = "";  
  106.  
  107. while(true)  
  108. {  
  109. //接受新連接  
  110. Socket mySocket = myListener.AcceptSocket() ;  
  111.  
  112. Console.WriteLine ("Socket Type " +mySocket.SocketType );  
  113. if(mySocket.Connected)  
  114. {  
  115. Console.WriteLine("\nClient Connected!!\n=\nCLient IP {0}\n",mySocket.RemoteEndPoint) ;  
  116.  
  117. Byte[] bReceive = new Byte[1024] ;  
  118. int i = mySocket.Receive(bReceive,bReceive.Length,0) ;  
  119.  
  120. //轉換成字符串類型  
  121. string sBuffer = Encoding.ASCII.GetString(bReceive);  
  122.  
  123.  
  124. //只處理"get"請求類型  
  125. if (sBuffer.Substring(0,3) != "GET" )  
  126. {  
  127. Console.WriteLine("只處理get請求類型..");  
  128. mySocket.Close();  
  129. return;  
  130. }  
  131.  
  132. // 查找 "HTTP" 的位置  
  133. iStartPos = sBuffer.IndexOf("HTTP",1);  
  134.  
  135. string sHttpVersion = sBuffer.Substring(iStartPos,8);  
  136.  
  137. // 得到請求類型和文件目錄文件名  
  138. sRequest = sBuffer.Substring(0,iStartPos - 1);  
  139.  
  140. sRequest.Replace("\\","/");  
  141.  
  142. //如果結尾不是文件名也不是以"/"結尾則加"/"  
  143. if ((sRequest.IndexOf(".") <1) && (!sRequest.EndsWith("/")))  
  144. {  
  145. sRequestsRequest = sRequest + "/";  
  146. }  
  147.  
  148. //得帶請求文件名  
  149. iStartPos = sRequest.LastIndexOf("/") + 1;  
  150. sRequestsRequestedFile = sRequest.Substring(iStartPos);  
  151.  
  152. //得到請求文件目錄  
  153. sDirName = sRequest.Substring(sRequest.IndexOf("/"), sRequest.LastIndexOf("/")-3);  
  154.  
  155. //獲取虛擬目錄物理路徑  
  156. sLocalDir = sMyWebServerRoot;  
  157.  
  158. Console.WriteLine("請求文件目錄 : " + sLocalDir);  
  159.  
  160. if (sLocalDir.Length == 0 )  
  161. {  
  162. sErrorMessage = "<H2>Error!! Requested Directory does not exists</H2><Br>";  
  163. SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);  
  164. SendToBrowser(sErrorMessage, ref mySocket);  
  165. mySocket.Close();  
  166. continue;  
  167. }  
  168.  
  169. if (sRequestedFile.Length == 0 )  
  170. {  
  171. // 取得請求文件名  
  172. sRequestedFile = "index.html";  
  173. }  
  174.  
  175.  
  176. String sMimeType = "text/html";  
  177.  
  178. sPhysicalFilePath = sLocalDir + sRequestedFile;  
  179. Console.WriteLine("請求文件: " + sPhysicalFilePath);  
  180.  
  181. if (File.Exists(sPhysicalFilePath) == false)  
  182. {  
  183.  
  184. sErrorMessage = "<H2>404 Error! File Does Not Exists...</H2>";  
  185. SendHeader(sHttpVersion, "", sErrorMessage.Length, " 404 Not Found", ref mySocket);  
  186. SendToBrowser( sErrorMessage, ref mySocket);  
  187.  
  188. Console.WriteLine(sFormattedMessage);  
  189. }  
  190.  
  191. else  
  192. {  
  193. int iTotBytes=0;  
  194.  
  195. sResponse ="";  
  196.  
  197. FileStream fs = new FileStream(sPhysicalFilePath, 
    FileMode.Open, FileAccess.Read, FileShare.Read);  
  198.  
  199. BinaryReader reader = new BinaryReader(fs);  
  200. byte[] bytes = new byte[fs.Length];  
  201. int read;  
  202. while((read = reader.Read(bytes, 0, bytes.Length)) != 0)  
  203. {  
  204. sResponsesResponse = sResponse + Encoding.ASCII.GetString(bytes,0,read);  
  205.  
  206. iTotBytesiTotBytes = iTotBytes + read;  
  207.  
  208. }  
  209. reader.Close();  
  210. fs.Close();  
  211.  
  212. SendHeader(sHttpVersion, sMimeType, iTotBytes, " 200 OK", ref mySocket);  
  213. SendToBrowser(bytes, ref mySocket);  
  214. //mySocket.Send(bytes, bytes.Length,0);  
  215. }  
  216. mySocket.Close();  
  217. }  
  218. }  
  219. }  
  220. }  

【編輯推薦】

  1. C#創建表單簡單介紹
  2. C#修改DataReader默認行為
  3. C#設置CooperativeLevel概述
  4. C#表單增加控件簡單描述
  5. C# EmployeePlug類概述
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-13 18:13:27

C#學習經驗

2009-08-11 14:20:41

C# .NET學習經驗

2009-09-01 13:10:39

C#讀取Word

2009-08-07 09:47:17

C#枚舉C#數組

2009-09-01 13:00:05

C#實現Windows

2009-08-21 17:42:36

C#調用API

2009-08-24 14:56:01

C#連接Access

2009-09-02 14:14:44

C# COM接口轉換

2009-08-27 11:21:36

C# override

2009-09-18 10:21:13

C#數組C#串操作

2009-09-16 17:13:54

學習Linq

2009-08-27 15:45:30

C#正則表達式

2015-09-30 14:40:47

WebAPI接口設計

2013-12-18 15:54:21

2010-06-13 13:44:07

UML學習筆記

2011-07-21 13:40:17

java

2011-07-08 13:15:52

JSP

2009-08-26 15:39:08

C#隱式類型局部變量

2010-06-02 09:06:26

SVN學習

2009-08-24 17:34:14

C#創建XML Web
點贊
收藏

51CTO技術棧公眾號

国内一区二区视频| 国产精品第九页| 午夜av成人| 国产精品色婷婷| 国产三级精品三级| 欧美成在线观看| 国产aⅴ爽av久久久久| 日韩免费影院| 亚洲在线观看| 中文字幕国产亚洲| 乱码一区二区三区| 成人免费直播| 亚洲色图另类专区| 久久另类ts人妖一区二区| 一级片久久久久| 91麻豆精品一二三区在线| 一区二区三区 在线观看视频| 精品高清视频| 四虎精品免费视频| 精品av导航| 欧美日韩国产小视频在线观看| 久操手机在线视频| 亚洲人妻一区二区| 欧美一区二区性| 日韩欧美一二三区| www.日日操| 97蜜桃久久| 亚洲日本乱码在线观看| 日本不卡久久| 特级丰满少妇一级aaaa爱毛片| 精品亚洲成a人| 国产精品第1页| 日本亚洲欧美在线| 欧美国产高潮xxxx1819| 中文字幕亚洲图片| 老鸭窝一区二区| 亚洲成人偷拍| 欧美日韩你懂得| 国产男女激情视频| 懂色av成人一区二区三区| 美女尤物久久精品| 97超级碰碰人国产在线观看| 国产乱国产乱老熟300| 精品国产免费人成网站| 亚洲制服丝袜av| 操bbb操bbb| 国产www.大片在线| 日韩高清在线电影| 97超级碰碰碰久久久| 精品深夜av无码一区二区老年| 97一区二区国产好的精华液| 欧美色图天堂网| 欧美 国产 小说 另类| 蜜臀久久精品| 亚洲国产精品一区二区www| 日本道在线视频| 国产露脸国语对白在线| 琪琪一区二区三区| 国产第一区电影| 日韩综合在线观看| 日本在线观看不卡视频| 日本精品免费观看| 精人妻无码一区二区三区| 日韩制服丝袜av| 国产精品高清在线| 成人黄色免费网| 久久午夜av| 国产精品久久久久一区二区| 国产精品suv一区二区88| 亚洲小说图片视频| 一个人看的www久久| 国产一级淫片久久久片a级| 日韩高清在线免费观看| 亚洲精品国产综合久久| 亚洲乱码国产乱码精品精大量| 日韩深夜影院| 中文字幕亚洲图片| 欧美三根一起进三p| 在线播放不卡| 国产999精品久久久| 亚洲免费在线观看av| 日韩国产精品久久久| 成人写真视频福利网| 国产日韩欧美一区二区东京热| 亚洲视频福利| 1769国产精品| 在线观看你懂的网站| 毛片基地黄久久久久久天堂| 国产噜噜噜噜噜久久久久久久久| 中文字幕在线视频第一页| 国模大尺度一区二区三区| 亚洲va男人天堂| 性xxxx视频播放免费| 日本一区二区三区四区在线视频| 在线播放 亚洲| 超碰电影在线播放| 欧美日韩国产精品一区| 免费黄色特级片| 国产a亚洲精品| 亚洲理论在线观看| 日韩xxxx视频| 最新电影电视剧在线观看免费观看| 亚洲欧洲综合另类在线| 国产av国片精品| xx欧美xxx| 制服丝袜激情欧洲亚洲| 色天使在线视频| 偷拍欧美精品| 欧美精品video| 丁香社区五月天| 国产69精品久久777的优势| 欧美日韩国产精品一卡| 亚洲在线视频播放| 成人h动漫精品| 亚洲一区二区在线观| 成年女人在线看片| 欧美日韩一区二区三区视频| 男男做爰猛烈叫床爽爽小说| 国产韩国精品一区二区三区| 美女久久久久久久久久久| 日韩三级免费看| 日本视频中文字幕一区二区三区| 国产免费一区二区三区| 国产伦精品一区二区三区免.费| 91尤物视频在线观看| 伊人网在线免费| 激情小说亚洲| 亚洲黄页视频免费观看| 日本黄色小说视频| 日日夜夜精品视频天天综合网| 国产日韩欧美一区二区三区四区| 猫咪在线永久网站| 欧美日韩性视频| av电影在线播放| 欧美精品一卡| 久久精品一本久久99精品| 久久精品无码av| 粉嫩一区二区三区性色av| 自拍偷拍亚洲色图欧美| 亚洲高清黄色| 欧美成人三级在线| 91视频综合网| 日日噜噜夜夜狠狠视频欧美人 | 正在播放久久| 国产综合av| 日韩www在线| 人妻巨大乳一二三区| 国产精品欧美一区二区三区不卡| 国产一区二区三区视频在线观看 | 99精品热6080yy久久| www国产精品视频| 激情五月激情综合| 免费一级欧美片在线观看| 国产精品久久久久久久久婷婷| 91蜜桃在线视频| 黄色在线免费网站| 欧美午夜理伦三级在线观看| 成人手机在线免费视频| 亚洲高清成人| 91久久精品一区二区别| av电影高清在线观看| 日韩一区二区三区电影在线观看 | 久久久久久久爱| 丰满岳乱妇国产精品一区| 亚洲一卡二卡三卡四卡无卡久久| 成年人看片网站| 欧美特黄一区| 国产日韩一区欧美| 国模套图日韩精品一区二区| 亚洲偷欧美偷国内偷| 中文在线观看免费高清| 亚洲欧美在线另类| 天天视频天天爽| 激情开心成人网| 日韩精品在线免费观看| а天堂中文在线资源| 久久草av在线| 永久久久久久| 波多野结衣一区二区三区免费视频| 久久免费少妇高潮久久精品99| 婷婷在线免费视频| 色国产综合视频| 91 在线视频| 成人白浆超碰人人人人| 亚洲性生活网站| 亚洲成av人片乱码色午夜| 国产成人免费电影| 思思99re6国产在线播放| 91精品国产综合久久香蕉麻豆 | 影视一区二区| 国产乱码精品一区二区三区卡| 日本无删减在线| 亚洲美女又黄又爽在线观看| 一级片在线观看视频| 一区二区三区在线视频观看58| 国产精品无码一区二区三| 日韩高清一区在线| 亚洲在线欧美| 国产精品色在线网站| 久久久免费观看| 全色精品综合影院| 中文字幕欧美激情| 成年人性生活视频| 久久裸体视频| 精品人妻人人做人人爽| 国产午夜一区| 亚洲一区二区三区四区视频| 男人天堂视频在线观看| 在线日韩精品视频| 人妻va精品va欧美va| 在线观看日韩高清av| frxxee中国xxx麻豆hd| 久久综合国产精品| 久草免费资源站| 看电视剧不卡顿的网站| av观看免费在线| 国产精品v日韩精品v欧美精品网站 | 欧美美女bb生活片| 久久精品视频6| 国产精品久久久久天堂| 51调教丨国产调教视频| 国产精品一二三| 亚洲成人福利在线| 久久婷婷久久| 日韩精品视频一区二区在线观看| 欧美a级在线| 欧美二区三区| 一区二区日韩| 国产精品高精视频免费| 中文字幕在线官网| 91高清在线免费观看| h视频在线免费观看| 中文字幕日韩高清| 日韩精品福利| 亚洲成avwww人| 精品国产鲁一鲁一区二区三区| 国产一区二区你懂的| 综合操久久久| 97精品视频| 亚洲精品乱码久久久久久蜜桃91 | 欧美黑人xxxxx| 美女呻吟一区| 精品一区二区三区国产| 国内精品免费| 国产精品久久久久久久久婷婷| jizz18欧美18| 国产乱码精品一区二区三区不卡| 91蜜桃臀久久一区二区| 国产日韩欧美91| 国产亚洲欧美日韩精品一区二区三区| 亚州国产精品久久久| a√中文在线观看| 免费97视频在线精品国自产拍| 蜜桃视频在线观看网站| 国产午夜一区二区| 91大神在线网站| 日韩在线观看成人| 麻豆av在线导航| 欧美日韩高清在线观看| 美女网站视频在线| 精品成人一区二区三区| 亚洲国产999| 亚洲成av人乱码色午夜| 神马电影在线观看| 亚洲欧美在线免费| 91欧美在线视频| xvideos亚洲| 欧美人动性xxxxz0oz| 91精品国产高清自在线| 桃色一区二区| 成人激情视频在线观看| 在线观看视频一区二区三区| 国产亚洲欧美一区二区三区| 伊人久久噜噜噜躁狠狠躁| 国产精品10p综合二区| 欧美天堂影院| 少妇特黄a一区二区三区| 四季av一区二区三区免费观看| 一区二区成人国产精品 | 毛片精品免费在线观看| 成人在线网址| 91av在线影院| 久久久精品一区二区毛片免费看| 国产精品男女猛烈高潮激情| 国产在线一区不卡| 精品亚洲欧美日韩| 日韩午夜电影网| 精品一区二区三区无码视频| 香蕉亚洲视频| av免费在线播放网站| 视频在线观看国产精品| 一二三av在线| 91美女在线视频| 黄色免费一级视频| 亚洲午夜精品17c| 最近免费中文字幕大全免费版视频| 91精品国产一区二区人妖| 国产三级av片| 欧美日韩亚洲综合在线| 国精品人妻无码一区二区三区喝尿| 亚洲欧美国产制服动漫| h网站久久久| 国产精品旅馆在线| 久久伦理中文字幕| 国产最新精品精品你懂的| 中文字幕精品在线不卡| 精品欧美一区二区在线观看视频| 欧美伦理在线视频| 男人天堂新网址| 免费在线亚洲| 亚洲欧美日韩网站| 国产亚洲精品aa午夜观看| 91porn在线视频| 色成人在线视频| 免费av网站在线播放| 中文字幕精品国产| 性感女国产在线| 91中文字精品一区二区| 国产欧美日韩在线一区二区| 日韩国产小视频| 六月丁香综合在线视频| 中文字幕乱码在线| 自拍偷拍亚洲激情| 在线视频一区二区三区四区| 欧美xxxxx牲另类人与| 天堂地址在线www| 国产精品免费网站| 国产亚洲一卡2卡3卡4卡新区| 免费一级淫片aaa片毛片a级| 精品无人区卡一卡二卡三乱码免费卡 | 51午夜精品| 97久久视频| www.com操| 国产日韩欧美精品一区| 你懂的国产在线| 精品福利一区二区三区免费视频| 欧美日韩在线看片| 国产精品日韩欧美大师| 香蕉视频一区二区三区| 国产激情片在线观看| 国产剧情一区二区| 亚洲 欧美 变态 另类 综合| 欧美日韩在线播| 久久久久久女乱国产| 欧美亚洲伦理www| 嗯啊主人调教在线播放视频| 亚洲自拍偷拍区| 99国产精品免费视频观看| 能看的毛片网站| 久久久久久电影| 国产免费一级视频| 日韩电影第一页| 成人性生活视频| 日本在线一区| 麻豆成人免费电影| 国产精品99久久久久久成人| 欧美艳星brazzers| 瑟瑟视频在线| 亚洲自拍偷拍福利| 亚洲福利电影| 国产偷人妻精品一区| 欧美视频免费在线| 都市激情在线视频| 国产美女扒开尿口久久久| 围产精品久久久久久久| 精产国品一区二区三区| 国产精品天干天干在观线| 国产一卡二卡三卡| 亚洲色图五月天| 亚洲成人人体| 麻豆md0077饥渴少妇| 福利电影一区二区| 国产精品一区无码| 中文字幕在线亚洲| 无码国模国产在线观看| 免费看国产曰批40分钟| 国产亚洲短视频| 国产美女永久免费| 久久精品免费电影| 激情av综合| 午夜国产一区二区三区| 国产精品乱码一区二三区小蝌蚪| japanese国产| 欧美在线播放视频| 亚洲精品亚洲人成在线观看| 日韩欧美精品在线观看视频| 国产农村妇女毛片精品久久麻豆 | 激情亚洲小说| 精品国产av无码一区二区三区| 91小视频免费看| 久久精品偷拍视频| yellow中文字幕久久| 久久综合五月婷婷| 亚洲一级片网站| 午夜欧美视频在线观看| 青青草在线视频免费观看| 成人av在线亚洲| 亚洲综合国产| 国产高潮国产高潮久久久91| 亚洲精品国产美女|