日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat源码学习(4)-How Tomcat works(转)

發(fā)布時(shí)間:2025/5/22 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat源码学习(4)-How Tomcat works(转) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ServerSocket類(lèi)

??? Socket類(lèi)代表一個(gè)客戶(hù)端套接字,即任何時(shí)候你想連接到一個(gè)遠(yuǎn)程服務(wù)器應(yīng)用的時(shí)候你構(gòu)造的套接字,現(xiàn)在,假如你想實(shí)施一個(gè)服務(wù)器應(yīng)用,例如一個(gè)HTTP服務(wù)器或者FTP服務(wù)器,你需要一種不同的做法。這是因?yàn)槟愕姆?wù)器必須隨時(shí)待命,因?yàn)樗恢酪粋€(gè)客戶(hù)端應(yīng)用什么時(shí)候會(huì)嘗試去連接它。為了讓你的應(yīng)用能隨時(shí)待命,你需要使用java.net.ServerSocket類(lèi)。這是服務(wù)器套接字的實(shí)現(xiàn)。
??? ServerSocket
Socket不同,服務(wù)器套接字的角色是等待來(lái)自客戶(hù)端的連接請(qǐng)求。一旦服務(wù)器套接字獲得一個(gè)連接請(qǐng)求,它創(chuàng)建一個(gè)Socket實(shí)例來(lái)與客戶(hù)端進(jìn)行通信。
???
要?jiǎng)?chuàng)建一個(gè)服務(wù)器套接字,你需要使用ServerSocket類(lèi)提供的四個(gè)構(gòu)造方法中的一個(gè)。你需要指定IP地址和服務(wù)器套接字將要進(jìn)行監(jiān)聽(tīng)的端口號(hào)。通常,IP地址將會(huì)是127.0.0.1,也就是說(shuō),服務(wù)器套接字將會(huì)監(jiān)聽(tīng)本地機(jī)器。服務(wù)器套接字正在監(jiān)聽(tīng)的IP地址被稱(chēng)為是綁定地址。服務(wù)器套接字的另一個(gè)重要的屬性是backlog,這是服務(wù)器套接字開(kāi)始拒絕傳入的請(qǐng)求之前,傳入的連接請(qǐng)求的最大隊(duì)列長(zhǎng)度。
???
其中一個(gè)ServerSocket類(lèi)的構(gòu)造方法如下所示:

public ServerSocket(int port, int backLog, InetAddress bindingAddress);

??? 對(duì)于這個(gè)構(gòu)造方法,綁定地址必須是java.net.InetAddress的一個(gè)實(shí)例。一種構(gòu)造InetAddress對(duì)象的簡(jiǎn)單的方法是調(diào)用它的靜態(tài)方法getByName,傳入一個(gè)包含主機(jī)名稱(chēng)的字符串,就像下面的代碼一樣。

InetAddress.getByName("127.0.0.1");

??? 下面一行代碼構(gòu)造了一個(gè)監(jiān)聽(tīng)的本地機(jī)器8080端口的ServerSocket,它的backlog1

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

??? 一旦你有一個(gè)ServerSocket實(shí)例,你可以讓它在綁定地址和服務(wù)器套接字正在監(jiān)聽(tīng)的端口上等待傳入的連接請(qǐng)求。你可以通過(guò)調(diào)用ServerSocket類(lèi)的accept方法做到這點(diǎn)。這個(gè)方法只會(huì)在有連接請(qǐng)求時(shí)才會(huì)返回,并且返回值是一個(gè)Socket類(lèi)的實(shí)例。Socket對(duì)象接下去可以發(fā)送字節(jié)流并從客戶(hù)端應(yīng)用中接受字節(jié)流,就像前一節(jié)"Socket類(lèi)"解釋的那樣。實(shí)際上,這章附帶的程序中,accept方法是唯一用到的方法。

應(yīng)用程序

??? 我們的web服務(wù)器應(yīng)用程序放在ex01.pyrmont包里邊,由三個(gè)類(lèi)組成:

·????? HttpServer

·????? Request

·????? Response

??? 這個(gè)應(yīng)用程序的入口點(diǎn)(靜態(tài)main方法)可以在HttpServer類(lèi)里邊找到。main方法創(chuàng)建了一個(gè)HttpServer的實(shí)例并調(diào)用了它的await方法。await方法,顧名思義就是在一個(gè)指定的端口上等待HTTP請(qǐng)求,處理它們并發(fā)送響應(yīng)返回客戶(hù)端。它一直等待直至接收到shutdown命令。
???
應(yīng)用程序不能做什么,除了發(fā)送靜態(tài)資源,例如放在一個(gè)特定目錄的HTML文件和圖像文件。它也在控制臺(tái)上顯示傳入的HTTP請(qǐng)求的字節(jié)流。不過(guò),它不給瀏覽器發(fā)送任何的頭部例如日期或者cookies
???
現(xiàn)在我們將在以下各小節(jié)中看看這三個(gè)類(lèi)。

轉(zhuǎn)載于:https://www.cnblogs.com/macula7/archive/2009/08/16/1960634.html

總結(jié)

以上是生活随笔為你收集整理的Tomcat源码学习(4)-How Tomcat works(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。