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