Update: example of webserver with webservice

        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();
            }
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值