Socket學習筆記

80端口是爲HTTP(HyperText Transport Protocol)即超文本傳輸協議開放的,此爲上網衝浪使用次數最多的協議,主要用於WWW(World Wide Web)即萬維網傳輸信息的協議。可以通過HTTP地址(即常說的“網址”)加“:80”來訪問網站,因爲瀏覽網頁服務默認的端口號都是80,因此只需輸入網址即可,不用輸入“:80”了。

查詢百度服務器IP地址:在cmd中輸入ping www.baidu.com

什麼是BufferedReader?

1. java.io.BufferedReader和java.io.BufferedWriter類各擁有8192字符的緩衝區。當BufferedReader在讀取文本文件時,會先儘量從文件中讀入字符數據並置入緩衝區,而之後若使用read()方法,會先從緩衝區中進行讀取。如果緩衝區數據不足,纔會再從文件中讀取,使用BufferedWriter時,寫入的數據並不會先輸出到目的地,而是先存儲至緩衝區中。如果緩衝區中的數據滿了,纔會一次對目的地進行寫出。

2. 從標準輸入流System.in中直接讀取使用者輸入時,使用者每輸入一個字符,System.in就讀取一個字符。爲了能一次讀取一行使用者的輸入,使用了BufferedReader來對使用者輸入的字符進行緩衝。readLine()方法會在讀取到使用者的換行字符時,再一次將整行字符串傳入。

3. System.in是一個位流,爲了轉換爲字符流,可使用InputStreamReader爲其進行字符轉換,然後再使用BufferedReader爲其增加緩衝功能。

什麼是InputStreamReader?

InputStreamReader 是字節流通向字符流的橋樑:它使用指定的 charset 讀取字節並將其解碼爲字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。

每次調用 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個字節。要啓用從字節到字符的有效轉換,可以提前從底層流讀取更多的字節,使其超過滿足當前讀取操作所需的字節。

爲了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。例如:

 BufferedReader in = newBufferedReader(new InputStreamReader(System.in));

什麼是PrintWriter?

向文本輸出流打印對象的格式化表示形式。此類實現在 PrintStream 中的所有 print 方法。它不包含用於寫入原始字節的方法,對於這些字節,程序應該使用未編碼的字節流進行寫入。

與 PrintStream 類不同,如果啓用了自動刷新,則只有在調用 printlnprintf 或 format 的其中一個方法時纔可能完成此操作,而不是每當正好輸出換行符時才完成。

ServerSocket的accept方法是什麼意思?


每當一個客戶進程執行以下代碼:

       Socket socket = new Socket("www.javathinker.org", 80);                                             

 

      就意味着在遠程 www.javathinker.org 主機的 80 端口上, 監聽到了一個客戶的連接請求. 管理客戶連接請求的任務是由操作系統來完成的. 操作系統把這些連接請求存儲在一個先進先出的隊列中. 許多操作系統限定了隊列的最大長度, 一般爲 50 . 當隊列中的連接請求達到了隊列的最大容量時, 服務器進程所在的主機會拒絕新的連接請求. 只有當服務器進程通過 ServerSocket 的 accept() 方法從隊列中取出連接請求, 使隊列騰出空位時, 隊列才能繼續加入新的連接請求.










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章