1、基本概念
2、UDP和TCP的區別
3、Socket及傳輸接受數據
4、TCP傳輸
1、基本概念
網絡通信要素:IP地址、端口號、傳輸協議
網絡模型:OSI參考模型、TCP/IP參考模型
2、UDP和TCP的區別
UDP——聊天,視頻會議,桌面共享
• 將數據及源和目的封裝成數據包中,不需要建立
• 每個數據報的大小在限制在64k內
• 因無連接,是不可靠協議
• 不需要建立連接,速度快
TCP
• 建立連接,形成傳輸數據的通道。
• 在連接中進行大數據量傳輸
• 通過三次握手完成連接,是可靠協議
• 必須建立連接,效率會稍低Socket
l
3、Socket 及傳輸接受數據
Socket就是爲網絡服務提供的一種機制。
通信的兩端都有Socket。
網絡通信其實就是Socket間的通信。l
數據在兩個Socket間通過IO傳輸。
需求:通過udp傳輸方式,將一段文字數據發送出去。,
定義一個udp發送端。
思路:
1、建立updsocket服務。
2、提供數據,並將數據封裝到數據包中。
3、通過socket服務的發送功能,將數據包發出去。
4、關閉資源。
需求:
定義一個應用程序,用於接收udp協議傳輸的數據並處理的。
定義udp的接收端。
思路:
1、定義udpsocket服務。通常會監聽一個端口。其實就是給這個接收網絡應用程序定義數字標識。方便於明確哪些數據過來該應用程序可以處理。
2、定義一個數據包,因爲要存儲接收到的字節數據。因爲數據包對象中有更多功能可以提取字節數據中的不同數據信息。
3、通過socket服務的receive方法將收到的數據存入已定義好的數據包中。
4、通過數據包對象的特有功能。將這些不同的數據取出。打印在控制檯上。
5、關閉資源。
receive(dp);阻塞式方法。read();也是。
4.TCP傳輸
Socket和ServerSocket
建立客戶端和服務器端
建立連接後,通過Socket中的IO流進行數據的傳輸
關閉socket
同樣,客戶端與服務器端是兩個獨立的應用程序。
基本思路(客戶端)
客戶端需要明確服務器的ip地址以及端口,這樣才可以去試着建立連接,如果連接失敗,會出現異常。
連接成功,說明客戶端與服務端建立了通道,那麼通過IO流就可以進行數據的傳輸,而Socket對象已經提供了輸入流和輸出流對象,通過getInputStream(),getOutputStream()獲取即可。
與服務端通訊結束後,關閉Socket。
基本思路(服務端)
服務端需要明確它要處理的數據是從哪個 端口進入的。
當有客戶端訪問時,要明確是哪個客戶 端,可通過accept()獲取已連接的客戶端 對象,並通過該對象與客戶端通過IO流進 行數據傳輸。
當該客戶端訪問結束,關閉該客戶端
客戶端
通過Socket建立對象並指定要連接的服務
端主機以及端口。
Socket s = new Socket(“192.168.1.1”,9999);
OutputStream out = s.getOutputStream();
out.write(“hello”.getBytes());
s.close();
服務端
建立服務端需要監聽一個端口 ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept ();
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int num = in.read(buf);
String str = new String(buf,0,num);
System.out.println(s.getInetAddress().toString()+”:”+str);
s.close();
ss.close();
Tcp傳輸最容易出現的問題
客戶端連接上服務端,兩端都在等待,沒有任何數據傳輸。
通過例程分析: 因爲read方法或者readLine方法是阻塞式。
解決辦法:
• 自定義結束標記
• 使用shutdownInput,shutdownOutput方法。
------- android培訓、java培訓、期待與您交流! ----------