精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本a级不卡| 欧美性理论片在线观看片免费| 国产一区二区三区久久悠悠色av| 欧美日本亚洲视频| 亚洲一区二区三区四区av| 小视频免费在线观看| 国产精品污www在线观看| 91嫩草国产在线观看| 亚洲欧美在线视频免费| 欧洲杯什么时候开赛| 欧美一区二区视频网站| 国模吧无码一区二区三区| 日本a级在线| 成人动漫精品一区二区| 国产精品入口福利| 91日韩中文字幕| 神马日本精品| 日韩一级黄色大片| 久久久久免费精品| 丁香花在线电影小说观看| 中国色在线观看另类| 国内精品**久久毛片app| 97国产成人无码精品久久久| 99视频精品| 久久久精品免费| 波多野结衣片子| 国产乱论精品| 日韩免费性生活视频播放| 一区二区三区入口| 综合在线影院| 午夜激情一区二区| 国产一级片91| 免费日本一区二区三区视频| 久久九九久精品国产免费直播| eeuss一区二区三区| 成人黄色片在线观看| 国产精品视区| 久久久久久久网站| 日本天堂中文字幕| 国产精品国产一区| 伊人久久五月天| 成人免费看aa片| 精品欧美午夜寂寞影院| 欧美大胆人体bbbb| 日本黄色一级网站| 国产激情精品一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 成人在线免费观看av| 高清电影在线免费观看| 一区二区三区在线影院| 91精品国产吴梦梦| 国产丝袜在线| 亚洲美女视频在线观看| 一区二区三区视频| 午夜激情视频在线| 中文乱码免费一区二区| 亚洲在线色站| 九义人在线观看完整免费版电视剧| 亚洲国产成人在线| 亚洲人成网站在线播放2019| 国产黄色免费在线观看| 日本一区二区三级电影在线观看 | 伊人久久久久久久久久久久| 乱码第一页成人| 国产91精品网站| 精品国产青草久久久久96| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品成久久久久三级| 中文字幕视频一区二区| 久久97超碰色| dy888夜精品国产专区| 视频污在线观看| 成人高清视频在线| 蜜桃91精品入口| porn视频在线观看| 亚洲人成小说网站色在线 | 国产视频三区四区| 国产精品91一区二区三区| 久久国产精品电影| 久久9999久久免费精品国产| 亚洲中午字幕| 国产区亚洲区欧美区| 国产丰满美女做爰| www.亚洲激情.com| 日韩欧美第二区在线观看| 日韩免费啪啪| 亚洲影院理伦片| 国内自拍在线观看| 成人免费福利| 欧美一区二区三区精品| 国产高清自拍视频| 欧美激情欧美| 国模吧一区二区三区| 一二三区免费视频| 国产一区二区视频在线| 久久精品aaaaaa毛片| 在线日本视频| 精品电影在线观看| 午夜宅男在线视频| 国内精品国产成人国产三级粉色| 国产一区二区免费| 免费毛片在线播放免费| 日韩成人精品视频| 国产98在线|日韩| 国产黄在线看| 亚洲mv大片欧洲mv大片精品| 国产精品久久久毛片| 韩国精品福利一区二区三区| 亚洲三级 欧美三级| 激情综合网五月天| 蜜桃精品视频在线观看| 成人av中文| 欧美三级电影一区二区三区| 午夜精品视频在线观看| 中文字幕第22页| 国产一区二区三区网| 欧美激情免费观看| 中文字幕在线视频免费| 91免费观看视频| 国产又粗又大又爽的视频| 欧美日韩不卡| 亚洲免费小视频| 精品在线视频观看| 国产剧情在线观看一区二区| 天堂va久久久噜噜噜久久va| 女海盗2成人h版中文字幕| 欧美一区在线视频| 成人无码精品1区2区3区免费看 | 一区二区三区欧美激情| 制服丝袜综合网| 亚洲人成精品久久久| 久久久噜噜噜久噜久久| 亚洲第一色视频| 亚洲视频中文字幕| 日韩中文字幕a| 欧美日韩第一| 国产精品18久久久久久首页狼| 五月天激情婷婷| 亚洲福利视频一区二区| 国产ts在线观看| 中文字幕日韩欧美精品高清在线| 国产日韩专区在线| 日本不卡不卡| 欧美区视频在线观看| 成人黄色短视频| 日韩在线播放一区二区| 日韩视频在线观看国产| 欧美日韩不卡| 少妇精69xxtheporn| 天天综合久久综合| 国产欧美一区二区精品久导航| 草草草在线视频| 国产一区二区三区四区五区| 国产精品久久久91| 日本电影在线观看网站| 欧美日韩国产不卡| 欧美成人777| 国产伦精品一区二区三区视频青涩| 国产精品亚洲天堂| 日本一区影院| 国内精品一区二区三区四区| 日韩在线观看视频一区| 精品日本高清在线播放| 97伦伦午夜电影理伦片| 日韩高清不卡一区二区| 一本一生久久a久久精品综合蜜| 色噜噜成人av在线| 欧美成人免费观看| 天堂网在线中文| 色综合亚洲欧洲| 动漫精品一区二区三区| 日本亚洲视频在线| 无码人妻精品一区二区三区99v| 91麻豆精品激情在线观看最新| 国内久久久精品| 国产片在线观看| 欧美一级高清大全免费观看| 日韩av男人天堂| 国产夜色精品一区二区av| 五月天激情播播| 亚洲视频一二| 日韩黄色影视| 香蕉免费一区二区三区在线观看| 97在线视频免费看| 99免在线观看免费视频高清| 日韩欧美中文字幕一区| 国产精品久免费的黄网站| 国产精品欧美一级免费| 年下总裁被打光屁股sp| 日韩国产高清影视| 青青在线视频免费观看| 国产成人精品一区二区免费看京 | 成人羞羞视频播放网站| 99国产超薄肉色丝袜交足的后果| 午夜激情电影在线播放| 久久久成人的性感天堂| 手机看片一区二区| 欧美日韩精品二区第二页| 国产精品成人免费一区二区视频| 欧美国产精品一区二区三区| 成人做爰69片免费| 麻豆精品在线播放| 黄色av网址在线播放| 国产精品久久久久久久久妇女| 国产精品v欧美精品∨日韩| 亚洲国产尤物| 97超级碰碰人国产在线观看| 成人在线免费看片| 亚洲日韩中文字幕在线播放| 六月丁香综合网| 欧美一三区三区四区免费在线看| 无码人妻av一区二区三区波多野| 亚洲高清视频中文字幕| 天堂av免费在线| 国产亚洲精品精华液| 久久久国产精品久久久| 琪琪一区二区三区| 日日摸日日碰夜夜爽av| 欧美精品啪啪| 黄色网络在线观看| 欧美午夜精彩| 日本一区免费在线观看| 蜜桃一区av| 国产精品国产亚洲精品看不卡15| 亚洲人成网站在线在线观看| 国产成人免费91av在线| 日韩电影免费看| 久久免费在线观看| 神马午夜伦理不卡 | 三级在线看中文字幕完整版| 欧美日韩国产第一页| 色哟哟免费在线观看| 亚洲一区二区精品| 日韩av资源| 精品中文字幕久久久久久| 亚洲伦理在线观看| 欧美大肚乱孕交hd孕妇| 精品欧美一区二区精品少妇| 欧美福利视频导航| 亚洲熟妇av乱码在线观看| 在线视频国产一区| 无码人妻av免费一区二区三区| 欧美性猛交丰臀xxxxx网站| 青青草免费观看视频| 欧美日韩午夜激情| 日韩av大片在线观看| 欧美日韩另类字幕中文| 日韩欧美中文字幕一区二区| 亚洲成人动漫av| 国产香蕉视频在线| 欧美日韩亚洲国产一区| 69视频免费在线观看| 色综合亚洲欧洲| 欧美成人一区二区视频| 欧美日韩和欧美的一区二区| 一区二区三区日| 91精品国产91热久久久做人人 | 久久婷婷五月综合色丁香| 国产美女扒开尿口久久久| 日本一区二区三区视频在线| 国产精品日日做人人爱| 成人污版视频| 风间由美久久久| 天天久久夜夜| 日韩妆和欧美的一区二区| 日韩电影免费在线观看| 99热一区二区三区| 国内自拍视频一区二区三区 | av日韩亚洲| 国产精品久久91| 国产中文欧美日韩在线| 国产精选在线观看91| 经典一区二区| 亚洲一区美女| 悠悠资源网久久精品| 亚洲人成色77777| 美女www一区二区| 无码人妻久久一区二区三区蜜桃| 91啪亚洲精品| 999精品视频在线观看播放| 亚洲成人手机在线| 超碰在线观看91| 日韩视频在线你懂得| 欧美xxx.com| 另类视频在线观看| 亚洲人体影院| 亚洲影院污污.| 亚洲欧洲免费| 久久观看最新视频| 久久精品1区| 中文字幕亚洲日本| 2019国产精品| 欧美日韩国产精品综合| 在线观看亚洲精品| 亚洲精品综合久久| 在线观看国产欧美| 国精产品一区一区三区mba下载| 国产成人精品最新| 中文字幕一区二区三区日韩精品| 日本视频一区二区在线观看| 欧美成人午夜| 日本xxxx黄色| www国产成人| 欧美日韩国产精品一区二区三区| 欧美性三三影院| 天堂在线视频免费观看| 久久伊人91精品综合网站| 在线视频cao| 国产欧美一区二区三区不卡高清| 久久在线视频| 粉嫩虎白女毛片人体| 国产99精品视频| 国产精品精品软件男同| 欧美视频一二三| 高h调教冰块play男男双性文| 中文日韩电影网站| 欧美粗大gay| 国模一区二区三区私拍视频| 欧美日韩福利| 亚洲免费成人在线视频| 国产日韩精品一区| 欧美a∨亚洲欧美亚洲| 精品久久久三级丝袜| 免费av在线| 国产日韩欧美在线看| 精品国产91久久久久久浪潮蜜月| 亚欧无线一线二线三线区别| 国产成人精品一区二区三区四区| 久久嫩草捆绑紧缚| 欧美视频三区在线播放| 国产精品毛片一区二区三区四区| 欧美一级成年大片在线观看| 另类ts人妖一区二区三区| 人人妻人人澡人人爽欧美一区 | 欧美亚一区二区| 噜噜噜噜噜在线视频| 91精品国产91| 少妇高潮一区二区三区| 欧美日韩黄色一级片| 丁香激情综合五月| 久久精品免费av| 亚洲成人网久久久| 国产精品论坛| 久久这里精品国产99丫e6| 亚洲少妇自拍| 一区二区黄色片| 色域天天综合网| 国产美女视频一区二区三区| 国产福利视频一区| 成人激情在线| 国产成人在线综合| 亚洲视频一二三区| 精品国产av 无码一区二区三区| 久久综合久中文字幕青草| 欧美视频精品全部免费观看| 欧美黄色免费网址| 成人av中文字幕| 羞羞影院体验区| 永久免费精品影视网站| 精品国产黄a∨片高清在线| 一区二区三区国产福利| 国产一区二区91| 18精品爽视频在线观看| 精品99一区二区三区| 天堂中文av在线资源库| 天天综合色天天综合色hd| 久久精品久久久精品美女| 免费在线观看一级片| 欧美不卡在线视频| 色一区二区三区| 一本一本久久a久久精品综合妖精| 国产一区二区三区精品视频| 久久精品99国产精| 精品视频www| 欧美男女视频| 成人av在线不卡| 久久久久久久久久久久久女国产乱 | 成人网在线视频| 亚洲视频免费| 成人在线手机视频| 日韩一区二区在线播放| 黄色在线观看www| 亚洲人成77777| caoporen国产精品视频| 少妇无套内谢久久久久| 精品视频9999| 国产精品欧美在线观看| 毛毛毛毛毛毛毛片123| 偷窥国产亚洲免费视频| 四虎久久免费| 久久国产精品 国产精品| 蜜臀av国产精品久久久久| 国产主播在线观看| 中文欧美在线视频| 噜噜噜天天躁狠狠躁夜夜精品 | 99热这里都是精品| 一区不卡在线观看| 欧美在线视频观看| 欧美在线1区| 手机免费观看av|