今日內容:網絡編程
1、網絡編程三要素
協議:數據傳輸的規範規則,常見的協議有:http協議,UDP協議、TCP協議
UDP協議特點:無連接,傳輸效率高,但是偶爾會出現數據丟包現象,相對不安全。
TCP協議特點:建立連接,傳輸效率相對低一點,數據安全不會丟失。
ip地址:在互聯網環境中,每臺電腦都有一個唯一標識,就是ip地址。用於找到具體是哪一臺電腦。
查看當前電腦的ip地址:ipconfig
查看兩臺計算機網絡連接是否通暢:ping 對方ip地址
InetAddress
此類表示Internet協議(IP)地址
public static InetAddress getByName(String host):確定主機名稱的IP地址。主機名稱可以是機器名稱,也可以是IP地址
public String getHostName():獲取此IP地址的主機名
public String getHostAddress():返回文本顯示中的IP地址字符串
端口號:相當於門牌號,用於找到計算機中的哪個程序。計算機中正在運行的程序端口號唯一,不能衝突。
端口號的範圍:1-65525;一般1024以內的可能會被系統佔用
2、UDP通信(瞭解)
Socket:也叫套接字,這是一個包含ip地址和端口號的網絡單位。例如:kg是一個重量單位,表示千克;km是一個長度單位,表示千米。
發送端思路:
1、創建核心對象DatagramSocket對象
DatagramSocket()
2、創建數據包對象 DatagramPacket對象
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
3、調用DatagramSocket對象的send方法發送消息
send(DatagramPacket dp)
4、釋放資源,關閉DatagramSocket。
close();
接收端思路:
1、創建核心對象DatagramSocket對象
DatagramSocket(int port)
2、創建數據包對象 DatagramPacket對象
DatagramPacket(byte[] buf, int length);
3、調用receive(DatagramPacket p)接收數據,數據會存到參數p中
4、從包中獲取接收的數據以及接收的數據的長度
5、釋放資源,關閉DatagramSocket。
close();
3、TCP通信
客戶端實現思路:
1、創建客戶端Socket對象
Socket(String host, int port) :參數1是服務器的ip地址,參數2是服務器中接收端程序的端口號
2、獲取輸出流,向服務器寫消息 只有字節流
public void tOutputStream()
3、釋放資源 close()
服務器端實現思路:
1、創建服務器端ServerSocket對象
ServerSocket(int port)
2、等待客戶端的連接
Socket accept()
3、通過連入的客戶端Socket對象獲取輸入流對象,讀取客戶端發送過來的消息
4、釋放資源
注意:Exception in thread "main" java.net.BindException: Address already in use (Bind failed)
原因:端口號衝突
解決:關閉之前的程序或者該端口號
4、案例:文件上傳
注意:發完了之後要告訴服務器以及上傳結束了
socket.shutdownOutput();