|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)鄙人面的段落中,让我们来看看这三个类吧。
HttpServer类
HttpServer类暗示一个web服务器,且在大众静态目次WEB_ROOT及它的子目次中能为找到的那些静态资本而服务。WEB_ROOT用以下体例初始化:
publicstaticfinalStringWEB_ROOT=
System.getProperty("user.dir")+File.separator+"webroot";
这段代码指了然一个包括静态资本的webroot目次,这些资本可用来测试该使用。在该目次中也能找到servlet容器。
要哀求一个静态资本,在扫瞄器中输出以下地点或URL:
http://machineName:port/staticResource
machineName是运转这个使用的盘算机名大概IP地点。假如你的扫瞄器是在统一台呆板上,可使用localhost作为呆板名。端口是8080。staticResource是哀求的文件夹名,它必需位于WEB-ROOT目次中。
一定,假如你利用统一个盘算机来测试使用,你想向HttpServer哀求发送一个index.html文件,那末利用以下URL:
http://localhost:8080/index.html
想要中断服务器,能够经由过程发送一个shutdown命令。该命令是被HttpServer类中的静态SHUTDOWN_COMMAND变量所界说:
privatestaticfinalStringSHUTDOWN_COMMAND="/SHUTDOWN";
因而,要中断服务,你可使用命令:
http://localhost:8080/SHUTDOWN
如今让我们来看看后面提到的await办法。上面一个程序清单给出懂得释。
Listing1.1.TheHttpServerclassawaitmethod
publicvoidawait(){
ServerSocketserverSocket=null;
intport=8080;
try{
serverSocket=newServerSocket(port,1,
InetAddress.getByName("127.0.0.1"));
}
catch(IOExceptione){
e.printStackTrace();
System.exit(1);
}
//Loopwaitingforarequest
while(!shutdown){
Socketsocket=null;
InputStreaminput=null;
OutputStreamoutput=null;
try{
socket=serverSocket.accept();
input=socket.getInputStream();
output=socket.getOutputStream();
//createRequestobjectandparse
Requestrequest=newRequest(input);
request.parse();
//createResponseobject
Responseresponse=newResponse(output);
response.setRequest(request);
response.sendStaticResource();
//Closethesocket
socket.close();
//checkifthepreviousURIisashutdowncommand
shutdown=request.getUri().equals(SHUTDOWN_COMMAND);
}
catch(Exceptione){
e.printStackTrace();
continue;
}
}
}
await办法是经由过程创立一个ServerSocket实例而入手下手的。然后它进进了一个WHILE轮回:
serverSocket=newServerSocket(
port,1,InetAddress.getByName("127.0.0.1"));
...
//Loopwaitingforarequest
while(!shutdown){
...
}
socket=serverSocket.accept();
在收到一个哀求后,await办法从accept办法前往的socket实例中取得java.io.InputStream和java.io.OutputStream对象。
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 |
|