軟件結構:
c/s
b/s
網絡編程:
概述:在一定的協議下,書寫代碼使得兩臺計算機在網絡下進行通信
網絡通信協議:通信協議是對計算機必須遵守的的規則
TCP/IP協議:傳輸控制協議/因特網互聯協議(Transmission Control Protocol/Internet Protocol),是Internet最基本、最廣泛
TCP協議特點:面向連接,數據安全,傳輸數據慢 三次握手
UDP協議特點:面向無連接,數據不安全,傳輸數據快
網絡編程三要素
協議: 計算機網絡通信必須遵守的規則
IP地址: IP地址用來給一個網絡中的計算機設備做唯一的編號
端口號: 端口號就可以唯一標識設備中的進程(應用程序),用兩個字節表示的整數,它的取值範圍是0-65535,其中,0-1023之間的端口號,已經佔用
通信程序:
兩端通訊時步驟:
1.服務端程序,需要事先啓動,等待客戶端的連接
2.客戶端主動連接服務器端,連接成功才能通信。服務端不可以主動連接客戶端
兩個類用於實現TCP通信程序:
1.客戶端:java.net.Socket 類表示。創建Socket對象,向服務端發出連接請求,服務端響應請求,兩者建立連接開始通信
2.服務端; java.net.ServerSocket 類表示。創建ServerSocket對象,相當於開啓一個服務,並等待客戶端的連接。
Socket 類:該類實現客戶端套接字,套接字指的是兩臺設備之間通訊的端點
構造方法
public Socket(String host, int port):創建套接字對象並將其連接到指定主機上的指定端口號。 如果指定的host是null,則相當於指定地址爲回送地址
成員方法
public InputStream getInputStream(): 返回此套接字的輸入流
public OutputStream getOutputStream(): 返回 此套接字的輸出流
public void close(): 關閉此套接字
public void shutdownOutput(): 禁止此套接字的輸出流
ServerSocket 類:這個類雙向了服務器套接字,該對象等待通過網絡的請求
構造方法
public ServerSocket(int port): 使用該構造方法在創建ServerSocket對象時 就可以將其綁定到一個指定的端口號上,參數port就是端口號
成員方法
public Socket accept(): 偵聽並接受連接,返回一個新的Socket對象,用於和客戶端實現通信
該方法會一直阻塞直到建立連接,如果客戶端沒有發送請求或者沒有和服務器連接成功,那麼就會一直阻塞,如果連接成功,就返回Socket對象
客戶端:
1.創建一個Socket對象,指定連接的服務器的ip地址以及端口號
2.通過socket對象獲取輸出流
3.創建一個字節輸入流,封裝數據源文件
4.使用字節輸入流從硬盤中讀取文件的數據
5.使用socket對象獲取的輸出流把這些文件數據寫給服務器
6.關閉流,釋放資源
服務端:
1.創建一個serversocket對象,指定服務的端口號
2.調用accept()方法,等待連接,如果連接上了就會返回對應的socket對象
3.創建一個字節輸出流對象,封裝目的地文件
4.使用socket對象獲取輸入,流讀取客戶端寫過來的數據
5.使用輸出流對象,把這些文件數據寫到服務器的硬盤中
6.關閉流,釋放資源