Esempio n. 1
0
        public byte[] serialize(Packet packet)
        {
            MemoryStream ms = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(ms);
            customPacket cp = packet as customPacket;

            bw.Write(cp.str);

            return(ms.GetBuffer());
        }
Esempio n. 2
0
        public Packet deserialize(System.IO.BinaryReader br)
        {
            customPacket ret = new customPacket();
            BinaryReader sr  = new BinaryReader(br.BaseStream);

            String getdata = sr.ReadString();
            String fHeader = getdata.Split('\n')[0];

            ((customHeader)ret.getHeader()).method = fHeader.Split(' ')[0];
            ((customHeader)ret.getHeader()).path   = fHeader.Split(' ')[1];
            ((customHeader)ret.getHeader()).ver    = fHeader.Split(' ')[2];
            foreach (var t in from str in getdata.Split('\n').Reverse().Skip(1).Reverse().Skip(1) select new {
                Key = str.Split(':')[0],
                Val = str.Split(':')[1]
            })
            {
                ((customHeader)ret.getHeader()).headers[t.Key.Trim()] = t.Val.Trim();
            }


            ret.str = getdata.Split('\n').Last();
            return(ret);
        }
Esempio n. 3
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();
        }