1. 程式人生 > >H2資料庫研究-TCP伺服器(四)

H2資料庫研究-TCP伺服器(四)

  又要好幾天沒有寫部落格了,做一件事情最難的就是堅持,很多開源的專案都是因為各種原因而中止的,但是我閱讀開原始碼絕不能半途而費,一定要堅持一下。

  今天又看了一點,使用H2的tcp方式連線資料庫,終於除錯了一下H2的tcp伺服器接收客戶端的傳送的連線請求的程式碼,大致過程是這樣的:

  1.客戶端通過JDBC驅動程式傳送一個請求,H2的TcpServer接收到客戶端的請求後,獲取socket物件中的輸入和輸出流,讀取輸入流中的資料,解析出url,使用者名稱和密碼等等資訊。

  2.通過資料庫引擎建立一個Session,再進一步核對客戶端請求的使用者名稱,密碼等資訊,若不正確則丟擲異常,並且將異常資訊通過Socket的輸出流傳送給客戶端,客戶端則會在呼叫getConnection的時候丟擲異常。

  3.若使用者名稱密碼等資訊正確,則會通過Socket的輸出流傳送給客戶端STATUS_OK的訊息給客戶端,並且建立一個Connection物件,成功建立Connection。

  4.伺服器繼續等待客戶端傳送呼叫SQL語句的資料。

  5.客戶端傳送SQL語句請求。

  6.伺服器端接收資料,解析資料,檢查SQL語句語法是否正確,若不正確則返回錯誤資訊,傳送給客戶端,若語法正確則執行SQL語句中相應的操作,返回執行之後的結果。

  客戶端和TCP伺服器之間的互動過程就是這樣的,還需要進一步瞭解具體的細節,以便自己能夠了解客戶端和伺服器端之間互動的細節。