Ejemplo n.º 1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            new Thread(new ThreadStart(
                           delegate
            {
                while (true)
                {
                    setLabel();
                    Thread.Sleep(1000);
                }
            }
                           )).Start();

            connector.frm = this;

            PacketPolicy policy = new PacketPolicy();
            customFilter gf     = new customFilter(policy);
            AsyncServer  server = new AsyncServer(8888, new PacketConv(), gf);

            server.setExceptionHandler(new ExceptionHandler((c, ex) =>
            {
                if (ex is HTTPException)
                {
                    HTTPException he = ex as HTTPException;
                    String msg       = "";
                    switch (he.code)
                    {
                    case 404:
                        msg = "HTTP/1.1 404 Not Found\r\nConnection: Close\r\nContent-Length: 8\r\nContent-Type:text/html; charset=UTF-8\r\n\r\n404Error";
                        break;
                    }
                    customPacket cp = new customPacket();


                    cp.str = msg;

                    c.Send(cp);
                    c.Close();
                }
            }));

            server.addFilter(new Filter((hd) =>
            {
                bool ret = File.Exists((hd as customHeader).path.Substring(1));
                if (!ret)
                {
                    throw new HTTPException(404);
                }
                return(ret);
            },
                                        (ct) =>
            {
                customPacket c    = ct.packet as customPacket;
                String d          = File.ReadAllText(((customHeader)c.getHeader()).path.Substring(1));
                String value      = "<h6>current directory is " + ((customHeader)c.getHeader()).path + "</h6><br>" + d;
                int contentLength = value.Length;
                String data       = String.Format("HTTP/1.1 200 OK\r\ncontent-length: {0}\r\nContent-Type:text/html; charset=UTF-8\r\n\r\n" + value, contentLength);
                customPacket send = new customPacket();
                Thread.Sleep(1000);
                send.str = data;
                ct.Send(send);
                ct.Close();
                return(true);
            }));

//                server.Map(c => { c.socket.Send(new byte[3]); }, uid => uid != 1);
            server.run();

            // continous packet test
            AsyncServer conServer = new AsyncServer(8000, new conPacketConv(), gf);

            conServer.addFilter(new Filter(Header => {
                return(true);
            }
                                           , context => {
                Debug.WriteLine("CONTINOUS RECV PACKET - " + ((conPacket)context.packet).str);
                return(true);
            }

                                           ));

            conServer.run();
        }
Ejemplo n.º 2
0
 public GlobalFilter(PacketPolicy packetPolicy)
 {
     policy = packetPolicy;
 }
Ejemplo n.º 3
0
 public customFilter(PacketPolicy pp)
     : base(pp)
 {
 }