亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現多線程的Web代理服務器實例

2019-10-29 21:40:54
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C#實現多線程的Web代理服務器,涉及C#多線程代理服務器的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C#實現多線程的Web代理服務器。分享給大家供大家參考。具體如下:

 

 
  1. /** 
  2. Proxy.cs: 
  3. C# Programming Tips & Techniques 
  4. by Charles Wright, Kris Jamsa 
  5. Publisher: Osborne/McGraw-Hill (December 28, 2001) 
  6. ISBN: 0072193794 
  7. */ 
  8. // Proxy.cs -- Implements a multi-threaded Web proxy server 
  9. // 
  10. // Compile this program with the following command line: 
  11. // C:>csc Proxy.cs 
  12. using System; 
  13. using System.Net; 
  14. using System.Net.Sockets; 
  15. using System.Text; 
  16. using System.IO; 
  17. using System.Threading; 
  18. namespace nsProxyServer 
  19. public class ProxyServer 
  20. static public void Main (string [] args) 
  21. int Port = 3125; 
  22. if (args.Length > 0) 
  23. try 
  24. Port = Convert.ToInt32 (args[0]); 
  25. catch 
  26. Console.WriteLine ("Please enter a port number."); 
  27. return
  28. try 
  29. // Create a listener for the proxy port 
  30. TcpListener sockServer = new TcpListener (Port); 
  31. sockServer.Start (); 
  32. while (true
  33. // Accept connections on the proxy port. 
  34. Socket socket = sockServer.AcceptSocket (); 
  35. // When AcceptSocket returns, it means there is a connection. Create 
  36. // an instance of the proxy server class and start a thread running. 
  37. clsProxyConnection proxy = new clsProxyConnection (socket); 
  38. Thread thrd = new Thread (new ThreadStart (proxy.Run)); 
  39. thrd.Start (); 
  40. // While the thread is running, the main program thread will loop around 
  41. // and listen for the next connection request. 
  42. catch (IOException e) 
  43. Console.WriteLine (e.Message); 
  44. class clsProxyConnection 
  45. public clsProxyConnection (Socket sockClient) 
  46. m_sockClient = sockClient; 
  47. Socket m_sockClient; //, m_sockServer; 
  48. Byte [] readBuf = new Byte [1024]; 
  49. Byte [] buffer = null
  50. Encoding ASCII = Encoding.ASCII; 
  51. public void Run () 
  52. string strFromClient = ""
  53. try 
  54. // Read the incoming text on the socket/ 
  55. int bytes = ReadMessage (m_sockClient, 
  56. readBuf, ref strFromClient); 
  57. // If it's empty, it's an error, so just return. 
  58. // This will termiate the thread. 
  59. if (bytes == 0) 
  60. return
  61. // Get the URL for the connection. The client browser sends a GET command 
  62. // followed by a space, then the URL, then and identifer for the HTTP version. 
  63. // Extract the URL as the string betweeen the spaces. 
  64. int index1 = strFromClient.IndexOf (' '); 
  65. int index2 = strFromClient.IndexOf (' ', index1 + 1); 
  66. string strClientConnection = 
  67. strFromClient.Substring (index1 + 1, index2 - index1); 
  68. if ((index1 < 0) || (index2 < 0)) 
  69. throw (new IOException ()); 
  70. // Write a messsage that we are connecting. 
  71. Console.WriteLine ("Connecting to Site " + 
  72. strClientConnection); 
  73. Console.WriteLine ("Connection from " + 
  74. m_sockClient.RemoteEndPoint); 
  75. // Create a WebRequest object. 
  76. WebRequest req = (WebRequest) WebRequest.Create 
  77. (strClientConnection); 
  78. // Get the response from the Web site. 
  79. WebResponse response = req.GetResponse (); 
  80. int BytesRead = 0; 
  81. Byte [] Buffer = new Byte[32]; 
  82. int BytesSent = 0; 
  83. // Create a response stream object. 
  84. Stream ResponseStream = response.GetResponseStream(); 
  85. // Read the response into a buffer. 
  86. BytesRead = ResponseStream.Read(Buffer,0,32); 
  87. StringBuilder strResponse = new StringBuilder(""); 
  88. while (BytesRead != 0) 
  89. // Pass the response back to the client 
  90. strResponse.Append(Encoding.ASCII.GetString(Buffer, 
  91. 0, BytesRead)); 
  92. m_sockClient.Send(Buffer, BytesRead, 0); 
  93. BytesSent += BytesRead; 
  94. // Read the next part of the response 
  95. BytesRead = ResponseStream.Read(Buffer, 0, 32); 
  96. catch (FileNotFoundException e) 
  97. SendErrorPage (404, "File Not Found", e.Message); 
  98. catch (IOException e) 
  99. SendErrorPage (503, "Service not available", e.Message); 
  100. catch (Exception e) 
  101. SendErrorPage (404, "File Not Found", e.Message); 
  102. Console.WriteLine (e.StackTrace); 
  103. Console.WriteLine (e.Message); 
  104. finally 
  105. // Disconnect and close the socket. 
  106. if (m_sockClient != null
  107. if (m_sockClient.Connected) 
  108. m_sockClient.Close (); 
  109. // Returning from this method will terminate the thread. 
  110. // Write an error response to the client. 
  111. void SendErrorPage (int status, string strReason, string strText) 
  112. SendMessage (m_sockClient, "HTTP/1.0" + " " + 
  113. status + " " + strReason + "/r/n"); 
  114. SendMessage (m_sockClient, "Content-Type: text/plain" + "/r/n"); 
  115. SendMessage (m_sockClient, "Proxy-Connection: close" + "/r/n"); 
  116. SendMessage (m_sockClient, "/r/n"); 
  117. SendMessage (m_sockClient, status + " " + strReason); 
  118. SendMessage (m_sockClient, strText); 
  119. // Send a string to a socket. 
  120. void SendMessage (Socket sock, string strMessage) 
  121. buffer = new Byte [strMessage.Length + 1]; 
  122. int len = ASCII.GetBytes (strMessage.ToCharArray(), 
  123. 0, strMessage.Length, buffer, 0); 
  124. sock.Send (buffer, len, 0); 
  125. // Read a string from a socket. 
  126. int ReadMessage (Socket sock, byte [] buf, ref string strMessage) 
  127. int iBytes = sock.Receive (buf, 1024, 0); 
  128. strMessage = Encoding.ASCII.GetString (buf); 
  129. return (iBytes); 

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品免费视频| 久久久亚洲福利精品午夜| 欧美精品免费在线观看| 欧美日韩国产va另类| 亚洲欧美国产日韩中文字幕| 亚洲女同性videos| 国产色婷婷国产综合在线理论片a| 欧美亚洲在线播放| 亚洲第一网站免费视频| 精品国偷自产在线视频| 成人在线国产精品| 中文字幕亚洲欧美一区二区三区| 92福利视频午夜1000合集在线观看| 中文字幕久热精品在线视频| 日韩电影在线观看免费| 精品成人乱色一区二区| 久久久久久国产三级电影| 亚洲国产另类 国产精品国产免费| 欧美午夜精品久久久久久浪潮| 国产精品视频久久| 亚洲女成人图区| 日韩大片免费观看视频播放| 久久久欧美精品| 欧美色道久久88综合亚洲精品| 国产精品国产三级国产专播精品人| 国产激情综合五月久久| 视频一区视频二区国产精品| 亚洲性生活视频| 亚洲一区二区三区乱码aⅴ| 亚洲九九九在线观看| 这里只有精品在线观看| 国产精品久久视频| 色偷偷av一区二区三区| 777777777亚洲妇女| 久久久国产一区二区| 狠狠躁夜夜躁人人爽超碰91| 久久91精品国产| 成人www视频在线观看| 隔壁老王国产在线精品| 亚洲japanese制服美女| 91精品在线观| 国产做受69高潮| 青青a在线精品免费观看| 国产97人人超碰caoprom| 精品国产福利在线| 欧美成人精品在线播放| 欧美成人小视频| 国产精品99久久久久久白浆小说| 亚洲人成电影网站色www| 久久久av亚洲男天堂| 国产成人精品优优av| 国产精品精品久久久久久| 国产一区二区三区毛片| 在线视频国产日韩| 亚洲永久免费观看| 国产人妖伪娘一区91| 国产精品无码专区在线观看| 高跟丝袜一区二区三区| 日韩av免费在线播放| 欧美激情精品久久久久| 欧美成人激情在线| 欧美激情一区二区三区在线视频观看| 91高清免费视频| 日韩精品免费在线视频观看| 欧美一级片在线播放| 久久久欧美精品| 狠狠色噜噜狠狠狠狠97| 久久久免费高清电视剧观看| 伊人久久久久久久久久久| 国产日韩专区在线| 国产精品一区久久久| 高清欧美性猛交xxxx| 欧美整片在线观看| 北条麻妃一区二区在线观看| 国内精品伊人久久| 亚洲女人天堂视频| 91黑丝高跟在线| 久久精品99久久久久久久久| 亚洲日韩中文字幕| 在线性视频日韩欧美| 欧美网站在线观看| 久久久久久久久网站| 精品国产一区久久久| 欧美人成在线视频| 国产一级揄自揄精品视频| 亚洲va码欧洲m码| 国产69精品99久久久久久宅男| 国产精品国产三级国产aⅴ9色| 久久久久久九九九| 亚洲国模精品私拍| 欧美乱人伦中文字幕在线| 亚洲免费一在线| 成人性生交大片免费看视频直播| 伊人伊成久久人综合网小说| 成人欧美一区二区三区黑人孕妇| 精品露脸国产偷人在视频| 97视频在线观看视频免费视频| 成人午夜两性视频| 成人国产在线视频| 成人亚洲欧美一区二区三区| 久久久久五月天| 成人免费大片黄在线播放| 97视频在线观看免费高清完整版在线观看| 亚洲国产欧美久久| 日本电影亚洲天堂| 影音先锋日韩有码| 在线成人激情黄色| 欧美成人激情视频免费观看| 国产精品99久久99久久久二8| 亚洲一级免费视频| 国产精品成人v| 91精品综合久久久久久五月天| 亚洲成年人影院在线| 国产精品久久久久久久久久东京| 国产视频久久久久久久| 国产精品亚洲综合天堂夜夜| 欧美精品在线观看| 怡红院精品视频| 97精品国产97久久久久久| 日韩精品在线观看一区| 亚洲精品456在线播放狼人| 91精品国产自产在线老师啪| 国产精品香蕉av| 亚洲天堂av高清| 中文字幕在线观看日韩| 久久成人这里只有精品| 欧美极品美女视频网站在线观看免费| 亚洲国产精品va在线观看黑人| 亚洲国产三级网| 日韩一级裸体免费视频| 欧美日韩国产成人在线| 国产精品香蕉av| 欧美日韩中文在线| 欧美视频在线观看免费| 中文字幕亚洲欧美一区二区三区| 欧美日韩国产精品一区二区三区四区| 欧美高跟鞋交xxxxhd| 中文字幕亚洲二区| 日韩av手机在线观看| 久久精品99国产精品酒店日本| 日韩精品久久久久久福利| 激情懂色av一区av二区av| 亚洲一区二区久久久久久| 69精品小视频| 日韩电影在线观看永久视频免费网站| 亚洲国产成人91精品| 国产精品成人播放| 亚洲品质视频自拍网| 国产精品久久91| 中文字幕av一区二区三区谷原希美| 一本大道亚洲视频| 亚洲视频在线观看网站| 欧美人成在线视频| 午夜精品久久久久久久久久久久| 91av在线免费观看| 91色视频在线观看| 成人在线中文字幕| 亚洲资源在线看| 亚洲精品一区二区在线| 国产一区二区美女视频| 日产日韩在线亚洲欧美| 欧美劲爆第一页| 国产精品白丝jk喷水视频一区| 国产中文字幕亚洲|