Java學習之隨堂筆記系列——day21

今日內容:網絡編程
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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章