Update: example of webserver with webservice

来源:互联网 发布:2017七天网络查询成绩 编辑:程序博客网 时间:2024/06/02 01:33
        private Socket socket;        public void setSocket(Socket s)        {            this.socket = s;        }        // main function        public void run()        {            String context = "here is the response.";            webServer ws = new webServer("AEServer");            byte[] buffer = new byte[4096];            String requestStr = readMessage(buffer, this.socket);            Console.WriteLine(requestStr);            // GET            Dictionary<String, String> parameters = ws.parseRequest(requestStr);            if (parameters != null)            {                if (parameters.ContainsKey("num1") && parameters.ContainsKey("num2"))                {                    try                    {                        long num1 = long.Parse(parameters["num1"]);                        long num2 = long.Parse(parameters["num2"]);                        wssla133.WebService1SoapClient client = new wssla133.WebService1SoapClient();                        long result = client.addFunction(num1, num2); //num1 + num2;                        // set it to a small num (less than 40). otherwise it will raise timeOut                        long fabo = 0;                        String faboStr = "";                        try                        {                            fabo = client.fabonacci(40);                            faboStr = fabo.ToString();                        }                        catch (Exception ex)                        {                            faboStr = "Error:" + ex.ToString();                        }                        context = "The result is " + result.ToString() + "<br/>"                                + "Fabonacci at position 40: " + faboStr + "<br/>"                                + "================================================" + "<br/>"                                + "<font size='2'>Host CPU: " + client.getHostCpuUsage().ToString() + " %<br/>"                                + "Host Available MEM: " + client.getHostMemUsage().ToString() + " MB<br/></font>";                    }                    catch (Exception ex)                    {                        context = "wo le ge qu!";                    }                                    }            }            else            {                String postContext2 =                            "<form method='POST' action='/'>"                        + "Number1:<input name='num1'/><br/>" + "Number2:<input name='num2'/><br/>"                        + "<input name='text'/>"                        + "<input type='submit'/>"                        + "</form>";                context = postContext2;            }                         ws.setContext(context);            String reply = ws.getOKStatus();                        buffer = new byte[reply.Length + 1];            if (!this.sendMessage(buffer, this.socket, reply))            {                Console.WriteLine("TimeOut");            }        }        private string readMessage(byte[] byteArray, Socket s)        {            int bytes = s.Receive(byteArray, 1024, 0);            String messageFromClient = UTF8Encoding.UTF8.GetString(byteArray).Replace("\0", "");            //Console.WriteLine(messageFromClient);            return messageFromClient;            //clientMessage = messageFromClient;              //return bytes;          }        private bool sendMessage(byte[] buffer, Socket s, String message)        {            try            {                int blen = UTF8Encoding.UTF8.GetBytes(message, 0, message.Length, buffer, 0);                s.Send(buffer, blen, 0);                return true;            }            catch            {                return false;            }                    }          public static void Main(string[] args)        {            //Console.Write(GetServiceOutput());            //Console.Read();             //listening port 80            int port = 65180;            //IPAddress localAddr = IPAddress.Parse("127.0.0.1");            TcpListener tcplistener = new TcpListener(IPAddress.Any, port);            Console.WriteLine("listening on the port:{0}", port);                        // read incoming request            tcplistener.Start();              webServer ws = new webServer("AEServer");            while (true)            {                Socket socket = tcplistener.AcceptSocket();                Program webProxy = new Program();                webProxy.setSocket(socket);                Thread t = new Thread(new ThreadStart(webProxy.run));                t.Start();            }        }


原创粉丝点击