首先,你要开启telnet服务。(如果没有打开:点击打开链接)
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
然后呢,我们打开eclipse,利用java.net.ServerSocket 自己写一个服务器
public class WebServer {
private static final int post = 8124;
//System.clearProperty("user.dir") 获得当前工作路径
private static final String uri = System.clearProperty("user.dir") + File.separator + "webroot" + File.separator;
public WebServer() {
System.out.println("WebServer()------star");
System.out.println("url------------------->" + uri);
System.out.println("File--------------->" + File.separator);
try {
ServerSocket listener = new ServerSocket(post);
System.out.println("listener---服务器正在运行端口----------------->" + listener.getLocalPort());
while (true) {
System.out.println("判断是否进入循环");
Socket socket = listener.accept();
System.out.println("socket------------------->" + socket.getLocalPort());
PrintStream out = new PrintStream(socket.getOutputStream(), true);
// 设置路径
File fileuri = new File(uri + "index.html");
System.out.println("fileuri------------------------------>" + fileuri);
// 设置文件类型
String contentType = null;
contentType = "text/html;charset=GBK";
if (!fileuri.exists()) { // 如果不存在此文件
System.out.println("没有找到这个文件");
} else {
System.out.println("找到这个文件");
}
FileInputStream fis = null;
fis = new FileInputStream(fileuri);
System.out.println("fis------------------------->" + fis);
byte data[];
data = new byte[fis.available()];
System.out.println("data------------------>" + data);
fis.read(data);
out.write(data);
out.close();
if (fis != null) {
fis.close();
}
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new WebServer();
}
第三步,在这个java文件所在的项目下面,建一个webroot文件夹(我们的项目是普通的java SE项目名,没有用Tomcate的啊)
在webroot里面建一个index.html.
Insert title here
hello
这样,一个简单的服务器就建好了。我们这里的服务器就和tomcat是一样性质的,文件(servlet,jsp,html)都是在服务器程序(包含WebServer.java 的服务器项目)中运行的。
如果用tomcat,我们在写web项目的时候,要将我们的项目部署到tomcat中,然后我们的项目就到tomcat的webapp文件夹下面去了。
而这里,我们就是在服务器项目中,加了index.html,就省去了部署这个步骤。
第四步,右键运行webserver.java,然后去浏览器(IE浏览器)中:
发现,我们已经可以访问到自己写的服务器里面的html了。
如果用火狐就下面输出这个,或者直接说连接被重置(如果您的计算机或网络受到防火墙或者代理服务器的保护,请确认 Firefox 已被授权访问网络。)
----------------------------------------------------------------------------------
以上是通过自己写服务器程序,然后通过浏览器访问服务器中的html文件。
cmd打开终端
输入:telnet 回车
输入:open localhost 8124 回车(这一步是基于上面我们自己写的服务器,端口号是8124,ip是localhost)
可以看到服务器返回了index.html.(当然为什么会返回这个html,是因为我们自己的服务器代码里面写了一旦侦听到这个端口的请求就找到项目里的index.html用读入流读入文件,然后输出流输出到屏幕)。
--------------------------------------
但是如果访问百度就会一直是正在连接,不过你用的linux这个命令就不会是一直正在连接,就可以请求到。
回车(只能说明我们是有访问的)
还有另一种方式:
输入:telnet www.baidu.com 80 回车
输入:ctrl + ] 回车(进入一个空的命令行界面,要提前复制好下面这个get命令,不然服务器请求怕是要断了)
输入:GET /index.html HTTP/1.1 回车回车
连接上了,这个是百度的首页。我们请求百度服务器中的index.html,百度服务器返回了这个页面以及http请求消息。
总结:
telnet是我们远程登陆服务的标准协议和主要方式,通过telnet就可以连接我们的服务器,然后再通过http协议的 get方法请求资源。通过这些我们再学习web方面知识的时候就可以更好的理解我们的servlet是如何在tomcat中运行,浏览器又是如何通过tomcat显示出我们的jsp页面执行我们的servlet。
(很多资料也是从百度上搜来的,然后自己整合,仅供学习参考。如果对telnet有兴趣,还可以看这个大神写的:点击打开链接)