Tomcat学习篇一

读Tomcat深入剖析一书,有点理解,记录下来,算不上原创,用自己的话巩固一下


首先理解,两台机器连接需要用的的方式:Socket(套接字)。

socket中连个方法,getInputStream和getOutputString ,分别是接收请求和返回。

Socket socket = new Socket("127.0.0.1", "8080"); 

OutputStream os = socket.getOutputStream(); 

boolean autoflush = true; 

PrintWriter out = new PrintWriter( socket.getOutputStream(), autoflush); 

 // send an HTTP request to the web server 

out.println("GET /index.jsp HTTP/1.1"); 

out.println("Host: localhost:8080"); 

out.println("Connection: Close"); 

out.println(); // read the response 

boolean loop = true; 

BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputstream() ));

StringBuffer sb = new StringBuffer(8096);

  while (loop) { 

if ( in.ready() ) { 

int i=0; 

while (i!=-1) { 

i = in.read(); 

sb.append((char) i); 

loop = false; 

Thread.currentThread().sleep(50);

 }

ServerSocket和Socket不同,服务器套接字的角色是等待来自客户端的连接请求。一旦服务器套接字获得一个连接请求,它创建一个Socket实例来与客户端进行通信。

new ServerSocket(8080, 1, InetAddress.getByName("127.0.0.1"));

ServerSocket有一个方法监听8080端口,ServerSocket.accept(),返回值是Socket。

HttpServer里的await()方法就是持续监听8080接收的http请求,他其实实现的就是ServerSocket的serverSocket.accept();方法。然后通过while循环实现持续监听。


简单来说:HttpServer里await()方法通过while循环调用HttpServer的accept()方法,当有http请求时,accept()方法返回一个Socket,然后将Socket解析成Request,Request request = new Request(Socket.getInputStream()); 下面是HttpServer的await()方法。这里注意,只有accept()返回值时才会继续往下执行。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值