java基礎----網路協議及網路通訊
網路協議:
- TCP:傳輸控制協議(傳輸層),三次握手建立連線,保證連線準確性;四次揮手斷開連線,報頭最小長度20位元組
- 客戶端:同步訊號SYN=1,隨機序列號SEQ=X
- 服務端:同步訊號SYN=1,報文ACK=X+1,隨機序列號Y
- 客戶端:同步訊號SYN=0,報文ACK=Y+1
- UDP:使用者資料包協議(傳輸層),面向無連線的協議,報頭8位元組
- HTTP:超文字傳輸協議(應用層),基於請求和響應模式、無狀態的協議,特點有:
- 支援C(客戶端)/S(伺服器)模式
- 靈活:允許傳輸任意型別的資料物件
- 無連線:每次響應一個請求後就斷開連線
- 無狀態:對事務處理沒有記憶能力
java網路請求:
Socket:tcp/ip協議的封裝和應用
- TCP程式設計:對網路通訊質量有要求時,例如傳輸檔案,瀏覽網頁,簡單使用過程:
- 伺服器端:定義ServerSocket物件ss,傳進埠號引數(例如6666),呼叫ss.accept()方法,等待客戶端連線,注意這方法會執行緒阻塞,連線成功(accept()執行完)會返回一個Socket物件,通過這個物件獲取輸入輸出流就可以和客戶端進行通訊了
- 客戶端:定義Socket物件s,傳進引數(目標主機IP地址,目標埠號),因為是測試,所以IP填自己IP地址(localhost),埠號填上面的6666,在上面例項化s後就已經連線上伺服器端ss了,通過s獲取輸入輸出流就可以和伺服器端進行通訊了
- UDP程式設計:對網路通訊質量要求不高時,例如,實時語音,視訊聊天,發生掉包也影響不大
HttpURLConnection:對Http協議的封裝和應用,簡單使用過程:
- 例項化URL物件,傳入網路地址
- 通過url.openConnection獲得HttpURLConnection物件connection
- 對connection設定GET或者POST方式決定是請求資料,還是想伺服器傳送資料
- 設定連線時間和讀取時間
- 獲取輸入輸出流,對流進行轉換為容易進行操作的其他流,例如BufferedRead,DataOutPutStream等等
- 最後一定要記得對流進行關閉,呼叫close()方法