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

首頁 > 編程 > C# > 正文

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

2020-01-24 01:37:15
字體:
來源:轉載
供稿:網友

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

/**Proxy.cs:C# Programming Tips & Techniquesby Charles Wright, Kris JamsaPublisher: Osborne/McGraw-Hill (December 28, 2001)ISBN: 0072193794*/// Proxy.cs -- Implements a multi-threaded Web proxy server////    Compile this program with the following command line://     C:>csc Proxy.csusing System;using System.Net;using System.Net.Sockets;using System.Text;using System.IO;using System.Threading;namespace nsProxyServer{ public class ProxyServer {  static public void Main (string [] args)  {   int Port = 3125;   if (args.Length > 0)   {    try    {     Port = Convert.ToInt32 (args[0]);    }    catch    {     Console.WriteLine ("Please enter a port number.");     return;    }   }   try   {    // Create a listener for the proxy port    TcpListener sockServer = new TcpListener (Port);    sockServer.Start ();    while (true)    {     // Accept connections on the proxy port.     Socket socket = sockServer.AcceptSocket ();     // When AcceptSocket returns, it means there is a connection. Create     // an instance of the proxy server class and start a thread running.     clsProxyConnection proxy = new clsProxyConnection (socket);     Thread thrd = new Thread (new ThreadStart (proxy.Run));     thrd.Start ();     // While the thread is running, the main program thread will loop around     // and listen for the next connection request.    }   }   catch (IOException e)   {    Console.WriteLine (e.Message);   }  } } class clsProxyConnection {  public clsProxyConnection (Socket sockClient)  {   m_sockClient = sockClient;  }  Socket m_sockClient; //, m_sockServer;  Byte [] readBuf = new Byte [1024];  Byte [] buffer = null;  Encoding ASCII = Encoding.ASCII;  public void Run ()  {   string strFromClient = "";   try   {    // Read the incoming text on the socket/    int bytes = ReadMessage (m_sockClient,           readBuf, ref strFromClient);    // If it's empty, it's an error, so just return.    // This will termiate the thread.    if (bytes == 0)     return;    // Get the URL for the connection. The client browser sends a GET command    // followed by a space, then the URL, then and identifer for the HTTP version.    // Extract the URL as the string betweeen the spaces.    int index1 = strFromClient.IndexOf (' ');    int index2 = strFromClient.IndexOf (' ', index1 + 1);    string strClientConnection =      strFromClient.Substring (index1 + 1, index2 - index1);    if ((index1 < 0) || (index2 < 0))    {     throw (new IOException ());    }    // Write a messsage that we are connecting.    Console.WriteLine ("Connecting to Site " +         strClientConnection);    Console.WriteLine ("Connection from " +         m_sockClient.RemoteEndPoint);    // Create a WebRequest object.    WebRequest req = (WebRequest) WebRequest.Create              (strClientConnection);    // Get the response from the Web site.    WebResponse response = req.GetResponse ();    int BytesRead = 0;    Byte [] Buffer = new Byte[32];    int BytesSent = 0;    // Create a response stream object.    Stream ResponseStream = response.GetResponseStream();    // Read the response into a buffer.    BytesRead = ResponseStream.Read(Buffer,0,32);    StringBuilder strResponse = new StringBuilder("");    while (BytesRead != 0)    {     // Pass the response back to the client     strResponse.Append(Encoding.ASCII.GetString(Buffer,          0, BytesRead));     m_sockClient.Send(Buffer, BytesRead, 0);     BytesSent += BytesRead;     // Read the next part of the response     BytesRead = ResponseStream.Read(Buffer, 0, 32);    }   }   catch (FileNotFoundException e)   {    SendErrorPage (404, "File Not Found", e.Message);   }   catch (IOException e)   {    SendErrorPage (503, "Service not available", e.Message);   }   catch (Exception e)   {     SendErrorPage (404, "File Not Found", e.Message);     Console.WriteLine (e.StackTrace);     Console.WriteLine (e.Message);   }   finally   {    // Disconnect and close the socket.    if (m_sockClient != null)    {     if (m_sockClient.Connected)     {      m_sockClient.Close ();     }    }   }   // Returning from this method will terminate the thread.  }  // Write an error response to the client.  void SendErrorPage (int status, string strReason, string strText)  {   SendMessage (m_sockClient, "HTTP/1.0" + " " +       status + " " + strReason + "/r/n");   SendMessage (m_sockClient, "Content-Type: text/plain" + "/r/n");   SendMessage (m_sockClient, "Proxy-Connection: close" + "/r/n");   SendMessage (m_sockClient, "/r/n");   SendMessage (m_sockClient, status + " " + strReason);   SendMessage (m_sockClient, strText);  }  // Send a string to a socket.  void SendMessage (Socket sock, string strMessage)  {   buffer = new Byte [strMessage.Length + 1];   int len = ASCII.GetBytes (strMessage.ToCharArray(),          0, strMessage.Length, buffer, 0);   sock.Send (buffer, len, 0);  }  // Read a string from a socket.  int ReadMessage (Socket sock, byte [] buf, ref string strMessage)  {   int iBytes = sock.Receive (buf, 1024, 0);   strMessage = Encoding.ASCII.GetString (buf);   return (iBytes);  } }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频播放| 国产精品免费在线免费| 亚洲bt天天射| 色多多国产成人永久免费网站| 久久99久国产精品黄毛片入口| 亚洲精品一区av在线播放| 不卡毛片在线看| 中文字幕亚洲欧美一区二区三区| 亚洲天堂第一页| 中文字幕亚洲欧美日韩在线不卡| 欧美激情精品久久久| 国产综合久久久久| 亚洲最大成人在线| 亚洲国产精品系列| 国产精品影院在线观看| 国产成人精品久久二区二区| 欧美性猛交xxxx免费看| 在线日韩av观看| 日韩中文字幕网| 91在线视频导航| 亚洲一区二区三区777| 欧美一级淫片videoshd| 97视频在线观看视频免费视频| 美女扒开尿口让男人操亚洲视频网站| 久久久久99精品久久久久| 奇米一区二区三区四区久久| 精品爽片免费看久久| 日韩av成人在线观看| 日本欧美精品在线| 色悠悠久久久久| 久久免费视频这里只有精品| 国产成人一区二区在线| www.日韩视频| 97精品国产97久久久久久免费| 中文字幕精品www乱入免费视频| 色噜噜亚洲精品中文字幕| 欧美黄网免费在线观看| 欧美性极品xxxx娇小| 亚洲自拍欧美另类| 日本一欧美一欧美一亚洲视频| 欧美午夜精品久久久久久浪潮| 久久天天躁狠狠躁夜夜av| 中文字幕免费精品一区| 欧美乱大交xxxxx| 国产精品美女主播在线观看纯欲| 秋霞午夜一区二区| 日韩在线视频线视频免费网站| 最近中文字幕mv在线一区二区三区四区| 疯狂欧美牲乱大交777| 欧美午夜美女看片| 亚洲精品一区久久久久久| 好吊成人免视频| 亚洲欧美成人一区二区在线电影| 久久精品久久久久久国产 免费| 国产玖玖精品视频| 亚洲国产三级网| 一区二区三区视频免费在线观看| 亚洲欧美在线第一页| 国产精品偷伦一区二区| 亚洲人av在线影院| 中文字幕国内精品| 亚洲视频在线免费观看| 日韩中文字幕国产| 亚洲美女免费精品视频在线观看| 久久精品国产一区二区电影| 91精品国产九九九久久久亚洲| 国产精品视频中文字幕91| 日韩的一区二区| 国产精品日本精品| 国产精品狼人色视频一区| 最近免费中文字幕视频2019| 夜夜嗨av色一区二区不卡| 国产成人精品免费久久久久| 91免费的视频在线播放| 欧美在线中文字幕| 国产成人av网址| 成人午夜激情免费视频| 亚洲第一精品夜夜躁人人爽| 日韩av免费在线播放| 国产精品成人在线| 日韩毛片在线观看| 91麻豆国产语对白在线观看| 日韩中文字幕欧美| 日韩精品中文字幕在线观看| 日韩精品中文字幕在线观看| 97国产在线视频| 亚洲aⅴ男人的天堂在线观看| 精品亚洲夜色av98在线观看| 91日韩在线播放| 精品国产精品自拍| 日韩中文字幕av| 日韩视频永久免费观看| 欧美精品videosex极品1| 美女视频黄免费的亚洲男人天堂| 国产成人鲁鲁免费视频a| 色青青草原桃花久久综合| 岛国av在线不卡| 精品福利樱桃av导航| 欧美人与性动交| 亚洲成人精品久久久| 亚洲理论电影网| 亚洲人成网在线播放| 国产美女精品视频免费观看| 亚洲97在线观看| 日韩av观看网址| 亚洲免费视频一区二区| 日韩网站在线观看| 亚洲精品suv精品一区二区| 综合136福利视频在线| 亚洲欧美成人一区二区在线电影| 亚洲三级黄色在线观看| 亚洲成人免费网站| 欧美资源在线观看| 精品成人在线视频| 91豆花精品一区| 亚洲国产天堂网精品网站| 日韩精品中文字| 亚洲第一av网站| 中文字幕日韩欧美精品在线观看| 国产精品久久久久aaaa九色| 国产精品久久久久久久久久新婚| www.欧美免费| 国产69久久精品成人| 色琪琪综合男人的天堂aⅴ视频| 欧美在线一区二区三区四| 国产精品亚洲网站| 中文字幕日韩在线播放| 亚洲精品一区久久久久久| 亚洲成av人乱码色午夜| 久久久精品中文字幕| 国产精品久久久久久久午夜| 日韩av在线直播| 久久伊人精品一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲色图欧美制服丝袜另类第一页| 国内精品伊人久久| 成人免费看吃奶视频网站| 日韩av网址在线| 伊人一区二区三区久久精品| 亚洲精品丝袜日韩| 国产欧美精品一区二区三区介绍| 欧美视频在线观看 亚洲欧| 国产色婷婷国产综合在线理论片a| 8090成年在线看片午夜| 国产精品美女免费视频| 狠狠躁18三区二区一区| 国产成人精品在线| 国产精品美女www| 欧美大学生性色视频| 欧美中文字幕在线观看| 欧美诱惑福利视频| 4438全国成人免费| 91香蕉国产在线观看| 成人精品在线观看| 国产成人精品国内自产拍免费看| 91成人在线播放| 国产日韩在线观看av| 伊人伊成久久人综合网小说| 日韩一区视频在线| 国产精品三级久久久久久电影| 欧美床上激情在线观看| 国产美女直播视频一区| 91久久国产婷婷一区二区| 中文字幕免费国产精品|