標籤:pre 會話 標準 nbsp 網路編程 輸出資料流 ade span cep
1.OSI模型
a.全稱:開放系統互聯
b.七層模型:應用程式層、展示層、會話層、傳輸層、網路層、資料連結層、物理層
c.注意:OSI模型 是所謂的 理論標準
2.TCP/IP模型
a.四層模型:應用程式層、傳輸層、網路互聯層、網路介面層
應用程式層——對應OSI模型中的 應用程式層、展示層、會話層
傳輸層——對應OSI模型中的 傳輸層
網路互聯層——對應OSI模型中的 網路層
網路介面層——對應OSI模型中的 資料連結層、物理層
b.特點:①TCP是一種安全的協議,但速度沒有UDP快
②TCP有三向交握機制,保證傳輸的安全性
③http、smtp、soap、ftp 底層指定使用TCP,被稱為 TCP/IP協議簇
c.連接埠號碼:連接埠號碼只能為 0~65535,注意前1024不準使用
tel:23 smtp:25 ftp:21 http:80
3.Socket類
a.用戶端——訊息的發起方
①得到要發送的訊息,可以接收外部輸入
String msg = new Scanner(System.in).next();
②得到Socket對象
Socket sc = null;sc = new Socket("127.0.0.1",9527); //傳IP地址與連接埠號碼
③把訊息交給Socket對象——由於是發送,所以方向是輸出資料流;發送內容可以是文本也可以是位元據,所以它提供的是位元組流——綜上,一定是OutputStream
OutputStream out = sc.getOutputStream(); //方法一out.write(msg.getBytes());out.flush();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sc.getOutputStream())); //方法二bw.write(msg);bw.flush();
④在finally塊中關閉通道
if(sc != null){ try { sc.close(); } catch (IOException e) { e.printStackTrace(); }}
b.服務端
①建立伺服器監聽器
ServerSocket server = null;server = new ServerSocket(9527);
②開始監聽
while(true){ Socket socket = server.accept(); //accept會進入阻塞狀態,一旦有訊息發送過來,就返回Socket對象 //④開啟子線程進行訊息處理 new ProcessThread(socket); }
③在finally塊中關閉通道
if(server != null){ try { server.close(); } catch (IOException e) { e.printStackTrace(); }}
④在子線程中,從Socket的InputStream取資料
public void run() { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = br.readLine(); System.out.println("接收的訊息:" + msg); } catch (IOException e) { e.printStackTrace(); } finally{ if(br != null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if(socket != null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Java 之 網路編程