前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >How Tomcat Works, A Guide to Developing Your Own Java Servlet Container

How Tomcat Works, A Guide to Developing Your Own Java Servlet Container

作者头像
yawn
发布2018-03-14 11:19:18
6140
发布2018-03-14 11:19:18
举报

1.1 socket网络通信基础

客户端使用主机地址和端口实例化一个socket,此socket通过输出流将字符串等传向服务器主机。

服务器使用端口号实例化一个serverSocket,调用accept()方法监听此端口,等待客户端的连接。一旦连接成功,就可以获取到输入流,将客户端通过网络发送的字符串读取到;也可以获取输出流,将自己的反馈信息发给客户端(客户端获取输入流就可以读到反馈信息)。

代码语言:javascript
复制
ServerSocket serverSocket = new ServerSocket("8080",1,"客户机1");
Socket socket = serverSocket.accept();
input = socket.getInputStream();
// 处理
// ...
output = socket.getOutputStream();

1.2 Http服务器的原理

http服务器就是通过以上介绍的原理来接收HTTP请求的,只是它接收到的是完全按照http协议格式的请求字符串。在服务器被连接(accept())后,就可以获得输入流和输出流,使用它们可以实例化一个请求和一个响应对象。

代码语言:javascript
复制
ServerSocket serverSocket = new ServerSocket("8080",1,"客户机1");
Socket socket = serverSocket.accept();

input = socket.getInputStream();

Request request = new Request(input);

service(request,response);

output = socket.getOutputStream();

Response response = new Response(output);

1.3 Request类

Request类要做的事情就是从输入流中接收字符串,并将一个完全符合http协议的请求字符串分解为一个Request对象。

根据上图,使用indexOf()以及subString()等方法就可以将字符串分解,并将各部分的值封装在Request对象中。

1.4 Response类

Response类需要将响应的字符串按照http响应的格式写到输出流中去。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档