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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |