folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Da Web Server Ve Form Geçişi Problemi



C# Da Web Server Ve Form Geçişi Problemi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    edminkardes
    edminkardes's avatar
    Kayıt Tarihi: 16/Haziran/2015
    Erkek

    öncelikle projeyi anlatayım,

    telefonun kamerası ile okuduğum etiketi anlık olarak c# ta yazdırmam gerek

    veri alma işlemini c# tarafında web server oluşturarak çözmek istiyorum

    https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server bu sitedeki  örneği uyguladım 

    şimdi yapmak istediğim şey tarayıcıdan "http://localhost:8080/test/" adresine girdiğimde açık olan form'u kapatıp başka bir form'u açmak takıldığım nokta açık olan formu kapatıp yeni formu açamıyorum ilk form kapanmıyor ikinciside hatalı şekilde açılıyor

     

    kodlar:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading;
    using System.Net;
    using System.Text;
    using System.Windows.Forms;
    
    namespace proje
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                WebServer ws = new WebServer(SendResponse, "http://localhost:8080/test/");
                ws.Run();
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form6());
            }
            public static string SendResponse(HttpListenerRequest request)
            {
                Form6 frm6= new Form6();
                frm6.Close();
                Form1 frm1 = new Form1();
                frm1.Show();
                return string.Format("<HTML><BODY>My web page.<br>{0}</BODY></HTML>", DateTime.Now);
            }
        }
        public class WebServer
        {
            private readonly HttpListener _listener = new HttpListener();
            private readonly Func<HttpListenerRequest, string> _responderMethod;
    
            public WebServer(string[] prefixes, Func<HttpListenerRequest, string> method)
            {
                if (!HttpListener.IsSupported)
                    throw new NotSupportedException(
                        "Needs Windows XP SP2, Server 2003 or later.");
    
                // URI prefixes are required, for example 
                // "http://localhost:8080/index/".
                if (prefixes == null || prefixes.Length == 0)
                    throw new ArgumentException("prefixes");
    
                // A responder method is required
                if (method == null)
                    throw new ArgumentException("method");
    
                foreach (string s in prefixes)
                    _listener.Prefixes.Add(s);
    
                _responderMethod = method;
                _listener.Start();
            }
    
            public WebServer(Func<HttpListenerRequest, string> method, params string[] prefixes)
                : this(prefixes, method) { }
    
            public void Run()
            {
                ThreadPool.QueueUserWorkItem((o) =>
                {
                    try
                    {
                        while (_listener.IsListening)
                        {
                            ThreadPool.QueueUserWorkItem((c) =>
                            {
                                var ctx = c as HttpListenerContext;
                                try
                                {
                                    string rstr = _responderMethod(ctx.Request);
                                    byte[] buf = Encoding.UTF8.GetBytes(rstr);
                                    ctx.Response.ContentLength64 = buf.Length;
                                    ctx.Response.OutputStream.Write(buf, 0, buf.Length);
                                }
                                catch { } // suppress any exceptions
                                finally
                                {
                                    // always close the stream
                                    ctx.Response.OutputStream.Close();
                                }
                            }, _listener.GetContext());
                        }
                    }
                    catch { } // suppress any exceptions
                });
            }
    
            public void Stop()
            {
                _listener.Stop();
                _listener.Close();
            }
        }
    }
    



    edminkardes tarafından 13/Ara/16 16:10 tarihinde düzenlenmiştir
Toplam Hit: 874 Toplam Mesaj: 1
c# web server