Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 21482|Απάντηση: 0

[Πηγή] net χρησιμοποιεί τη θύρα ακρόασης HttpListener

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 16/12/2015 3:32:24 μ.μ. | | |
  1. //log配置
  2.         Config cfg = new Config();
  3.         //HTTP监听
  4.         private HttpListener listeren = new HttpListener();
  5.         public QRcode()
  6.         {
  7.             InitializeComponent();
  8.         }
  9.         /// <summary>
  10.         /// 获取启动参数
  11.         /// </summary>
  12.         /// <param name="args"></param>
  13.         public void ShowEx(string[] args)
  14.         {
  15.             Args.RunningArgs = args;
  16.         }
  17.         /// <summary>
  18.         /// 开启监听
  19.         /// </summary>
  20.         private void Init()
  21.         {
  22.             try
  23.             {
  24.                 //指定身份验证 Anonymous匿名访问
  25.                 listeren.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
  26.                 //创建IP地址
  27.                 IPAddress address = IPAddress.Parse(Args.RunningArgs[0]);
  28.                 listeren.Prefixes.Add("http://" + address + ":" + Args.RunningArgs[1] + "/");
  29.                 listeren.Start();
  30.                 Thread threadlistener = new Thread(new ThreadStart(ThreadStartListener));
  31.                 threadlistener.Start();
  32.                 //MessageBox.Show("监听成功");
  33.             }
  34.             catch (Exception ex)
  35.             {
  36.                 cfg.Logs.Add(new LogClass { LogStr = "HttpListener error", ExInfo = ex });
  37.             }
  38.         }
  39.         /// <summary>
  40.         /// 监听连接线程
  41.         /// </summary>
  42.         private void ThreadStartListener()
  43.         {
  44.             try
  45.             {
  46.                 while (true)
  47.                 {
  48.                     // 注意: GetContext 方法将阻塞线程,直到请求到达
  49.                     HttpListenerContext context = listeren.GetContext();
  50.                     // 取得请求对象
  51.                     HttpListenerRequest request = context.Request;
  52.                     //响应
  53.                     Writer("ok", context);
  54.                 }
  55.             }
  56.             catch (Exception ex)
  57.             {
  58.                 cfg.Logs.Add(new LogClass { LogStr = "HttpListener error", ExInfo = ex });
  59.             }
  60.         }
  61.         /// <summary>
  62.         /// 响应内容
  63.         /// </summary>
  64.         /// <param name="str"></param>
  65.         /// <param name="context"></param>
  66.         public void Writer(string str, HttpListenerContext context)
  67.         {
  68.             HttpListenerRequest request = context.Request;
  69.             Console.WriteLine("{0} {1} HTTP/1.1", request.HttpMethod, request.RawUrl);
  70.             Console.WriteLine("Accept: {0}", string.Join(",", request.AcceptTypes));
  71.             Console.WriteLine("Accept-Language: {0}",
  72.                 string.Join(",", request.UserLanguages));
  73.             Console.WriteLine("User-Agent: {0}", request.UserAgent);
  74.             Console.WriteLine("Accept-Encoding: {0}", request.Headers["Accept-Encoding"]);
  75.             Console.WriteLine("Connection: {0}",
  76.                 request.KeepAlive ? "Keep-Alive" : "close");
  77.             Console.WriteLine("Host: {0}", request.UserHostName);
  78.             Console.WriteLine("Pragma: {0}", request.Headers["Pragma"]);
  79.             // 取得回应对象
  80.             HttpListenerResponse response = context.Response;
  81.             // 构造回应内容
  82.             string responseString = str;
  83.             // 设置回应头部内容,长度,编码
  84.             response.ContentLength64
  85.                 = System.Text.Encoding.UTF8.GetByteCount(responseString);
  86.             response.ContentType = "text/html; charset=UTF-8";
  87.             // 输出回应内容
  88.             System.IO.Stream output = response.OutputStream;
  89.             System.IO.StreamWriter writer = new System.IO.StreamWriter(output);
  90.             writer.Write(responseString);
  91.             // 必须关闭输出流
  92.             writer.Close();
  93.         }
  94.         private void Window_Loaded(object sender, RoutedEventArgs e)
  95.         {
  96.             try
  97.             {
  98.                 #region 开启日志
  99.                 string logPath = AppDomain.CurrentDomain.BaseDirectory + "log4net.config";
  100.                 LogHelper.SetConfig(new FileInfo(logPath));
  101.                 new Entity.LogClass().StartLogThread(ref cfg);
  102.                 cfg.Logs.Add(new LogClass { LogStr = "----------------------------------------------------------------------------------------------" });
  103.                 #endregion
  104.                 //开启监听
  105.                 Init();
  106.             }
  107.             catch (Exception ex)
  108.             {
  109.                 cfg.Logs.Add(new LogClass { LogStr = "Load parameter error", ExInfo = ex });
  110.             }
  111.         }
Αντιγραφή κώδικα






Προηγούμενος:Το WPF διαβάζει και γράφει αρχεία διαμόρφωσης
Επόμενος:Το .NET μετατρέπει έγγραφα του Word σε αρχεία PDF
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com