1. Socket相關概念編程
1)網絡通訊模型:C/S:client/server,客戶端/服務器端;B/S:browser/server,瀏覽器端/服務器端;C/S結構的優勢:應用的針對性強,畫面絢麗,應用功能複雜。缺點:不易維護。B/S結構的優勢:易於維護。缺點:效果差,交互性不強。瀏覽器
2)Socket:封裝着本地的地址,服務端口等信息。ServerSocket:服務端的套接字。服務器
服務器:使用ServerSocket監聽指定的端口,端口能夠隨意指定(因爲1024如下的端口一般屬於保留端口,在一些操做系統中不能夠隨意使用,因此建議使用大於1024的端口),等待客戶鏈接請求,客戶鏈接後,會話產生;在完成會話後,關閉鏈接。網絡
客戶端:使用Socket對網絡上某一個服務器的某一個端口發出鏈接請求,一旦鏈接成功,打開會話;會話完成後,關閉Socket。客戶端不須要指定打開的端口,一般臨時的、動態的分配一個1024以上的端口。ide
3)永遠都是Socket去主動鏈接ServerSocket。一個ServerSocket能夠接收若干個Socket的鏈接。網絡通訊的前提:必定要捕獲異常。spa
4)Socket鏈接基於TCP/IP協議,是一種長鏈接(長時間連着)。操作系統
5)讀取服務器信息會阻塞,寫操做不會。3d
6)創建鏈接並向服務器發送信息步驟:①經過服務器的地址及端口與服務器鏈接,而建立Socket時須要以上兩個數據。②鏈接成功後能夠經過Socket獲取輸入流和輸出流,使用輸入流接收服務端發送過來的信息。③關閉鏈接。orm
7)鏈接服務器:一旦Socket被實例化,那麼它就開始經過給定的地址和端口號去嘗試與服務器進行鏈接(自動的)。這裏的地址"localhost"是服務器的地址,8088端口是服務器對外的端口。咱們自身的端口是系統分配的,咱們無需知道。server
8)和服務器通訊(讀寫數據):使用Socket中的getInputStream()獲取輸入流,使用getOutputStream()獲取輸出流。
9)ServerSocket構造方法要求咱們傳入打開的端口號,ServerSocket對象在建立的時候就向操做系統申請打開這個端口。
10)經過調用ServerSocket的accept方法,使服務器端開始等待接收客戶端的鏈接。該方法是一個阻塞方法,監聽指定的端口是否有客戶端鏈接。直到有客戶端與其鏈接並接收客戶端套接字,不然該方法不會結束。
2. 基本Socket網絡編程--服務端和客戶端簡單實現
案例37: