加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Update: example of webserver with webservice

发布时间:2020-12-17 01:13:48 所属栏目:安全 来源:网络整理
导读: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 req
        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("","");
            //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,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();
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读