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();
}
}
Update: example of webserver with webservice
最新推荐文章于 2020-06-24 17:02:15 发布