亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java Socket應用---通信是這樣練成的

難度初級
時長 2小時 0分
學習人數
綜合評分9.77
496人評價 查看評價
9.9 內容實用
9.8 簡潔易懂
9.6 邏輯清晰
  • ip地址和端口號組成了所謂的socket
    查看全部
    0 采集 收起 來源:網絡基礎簡介

    2021-06-16

  • 端口號用來區別一臺主機上不同應用程序的通信。
    查看全部
    0 采集 收起 來源:網絡基礎簡介

    2021-06-16

  • package?com.study.socket;
    import?javax.sound.sampled.Port;
    import?java.io.IOException;
    import?java.net.*;
    /**
    ?*?UDP?Client客服端
    ?*/
    public?class?UDPClient?{
    ????public?static?void?main(String[]?args)?throws?IOException?{
    ????????//1.定義消息?服務端ip地址?端口號
    ????????String?msg?=?"用戶名:sw;密碼:123456";
    ????????InetAddress?address?=?InetAddress.getByName("DESKTOP-VQBUTGQ");
    ????????int?port?=?8000;
    ????????//2.創建數據報
    ????????byte[]?data?=?msg.getBytes();
    ????????DatagramPacket?packet?=?new?DatagramPacket(data,?data.length,?address?,?port?);
    ????????//3.創建socket
    ????????DatagramSocket?socket?=??new?DatagramSocket();
    ????????//4.發送消息
    ????????socket.send(packet);
    ????????//5.接收反饋信息
    ????????byte[]?data1?=?new?byte[1024];
    ????????DatagramPacket?packet1?=?new?DatagramPacket(data1?,?0?,?data1.length);
    ????????socket.receive(packet1);
    ????????String?rt?=?new?String(data1,0,packet1.getLength());
    ????????System.out.println("這是客戶端,服務端反饋信息為:?"?+?rt);
    ????????//5.釋放資源
    ????????socket.close();
    ????}
    }
    package?com.study.socket;
    
    import?java.io.IOException;
    import?java.net.DatagramPacket;
    import?java.net.DatagramSocket;
    import?java.net.InetAddress;
    import?java.net.SocketException;
    
    /**
    *?UDP?服務器端
    */
    public?class?UDPServer?{
    ???public?static?void?main(String[]?args)?{
    ???????try?{
    ???????????//1.建立socket并制定端口號
    ???????????DatagramSocket?socket?=?new?DatagramSocket(8000);
    ???????????int?num?=?0;
    ???????????while?(true){
    ???????????????UDPServerThread?thread?=?new?UDPServerThread(socket);
    ???????????????thread.setPriority(4);
    ???????????????thread.run();
    ???????????????num++;
    ???????????????System.out.println("服務器端接受了?"?+?num?+?"?個客戶端請求!");
    ???????????}
    ???????}?catch?(SocketException?e)?{
    ???????????e.printStackTrace();
    ???????}?catch?(IOException?e)?{
    ???????????e.printStackTrace();
    ???????}
    ???}
    }
    package?com.study.socket;
    
    import?java.io.IOException;
    import?java.net.DatagramPacket;
    import?java.net.DatagramSocket;
    import?java.net.InetAddress;
    
    /**
    *?UDP?server?多線程實現
    */
    public?class?UDPServerThread?extends?Thread{
    
    ???DatagramSocket?socket?=?null;
    
    ???public?UDPServerThread(DatagramSocket?socket){
    ???????this.socket?=?socket;
    ???}
    
    ???@Override
    ???public?void?run()?{
    ???????try?{
    ???????????byte[]?data?=?new?byte[1024];
    ???????????DatagramPacket?packet?=?new?DatagramPacket(data,data.length);
    ???????????//3.接收客戶端發送的數據信息
    ???????????socket.receive(packet);//此方法在接收到數據報之前一直阻塞
    ???????????//4.讀取數據報信息
    ???????????String?msg?=?new?String(data,0,packet.getLength());
    ???????????System.out.println("UDP?server服務器接收到的信息:?"?+?msg);
    ???????????//5.反饋信息
    ???????????String?rt?=?"歡迎您!";
    ???????????byte[]?data1?=?rt.getBytes();
    ???????????InetAddress?address?=?packet.getAddress();
    ???????????int?port?=?packet.getPort();
    ???????????DatagramPacket?packet1?=?new?DatagramPacket(data1,?data1.length?,?address?,?port?);
    ???????????socket.send(packet1);
    ???????}?catch?(IOException?e)?{
    ???????????e.printStackTrace();
    ???????}
    ???}
    }
    查看全部
  • package?com.study.socket;
    
    import?java.io.IOException;
    import?java.io.OutputStreamWriter;
    import?java.io.PrintWriter;
    import?java.net.Socket;
    /**
    *?socket編程模擬客服端
    */
    public?class?Client?{
    ???public?static?void?main(String[]?args)?{
    ???????//1.創建客戶端socket
    ???????Socket?socket?=?null;
    ???????try?{
    ???????????socket?=?new?Socket("127.0.0.1",8888);
    ???????????//2.獲取輸出流
    ???????????OutputStreamWriter?osw?=?new?OutputStreamWriter(socket.getOutputStream());
    ???????????PrintWriter?pw?=?new?PrintWriter(osw);
    ???????????pw.write("用戶名:polly;密碼:809");
    ???????????pw.flush();
    ???????????//4.釋放資源
    ???????????pw.close();
    ???????????osw.close();
    ???????????socket.close();
    ???????}?catch?(IOException?e)?{
    ???????????e.printStackTrace();
    ???????}
    ???}
    }
    package?com.study.socket;
    
    import?java.io.*;
    import?java.net.ServerSocket;
    import?java.net.Socket;
    
    /**
    *?socket編程模擬服務器端
    */
    public?class?Server?{
    
    ???public?static?void?main(String[]?args)?{
    ???????try?{
    ???????????//1.建立服務端socket
    ???????????ServerSocket?serverSocket?=?new?ServerSocket(8888);
    ???????????int?num?=?0;
    ???????????while(true){
    ???????????????//2.監聽端口
    ???????????????Socket?socket?=?serverSocket.accept();
    ???????????????ServerThread?st?=?new?ServerThread(socket);
    ???????????????st.setPriority(4);//設置線程的優先級,范圍是【1,10】??默認是5
    ???????????????st.start();
    ???????????????num++;
    ???????????????System.out.println("服務器端接受?"?+?num?+?"?個客戶端請求!");
    ???????????}
    ???????}?catch?(IOException?e)?{
    ???????????e.printStackTrace();
    ???????}
    
    ???}
    }


    package?com.study.socket;
    
    import?java.io.*;
    import?java.net.Socket;
    
    /**
    *?服務器線程實現
    */
    public?class?ServerThread?extends?Thread?{
    ???Socket?socket?=?null;
    
    ???public?ServerThread(Socket?socket){
    ???????this.socket?=?socket;
    ???}
    
    ???@Override
    ???public?void?run()?{
    ???????if(socket?!=?null){
    ???????????//讀取輸入流
    ???????????InputStream?is?=?null;
    ???????????InputStreamReader?isr?=?null;
    ???????????BufferedReader?br?=?null;
    ???????????OutputStreamWriter?osw?=?null;
    ???????????PrintWriter?pw?=?null;
    ???????????try?{
    ???????????????is?=?socket.getInputStream();
    ???????????????isr?=?new?InputStreamReader(is);
    ???????????????br?=?new?BufferedReader(isr);
    ???????????????System.out.println("服務器讀取客戶端信息:"?+?socket.getLocalAddress()?+?"?:?"?+
    ???????????????????????socket.getLocalPort()??+?"?"?+?br.readLine());
    ???????????????//返回響應流
    ???????????????osw?=?new?OutputStreamWriter(socket.getOutputStream());
    ???????????????pw?=?new?PrintWriter(osw);
    ???????????????pw.write("請求已接到!");
    ???????????????pw.flush();
    
    ???????????}?catch?(IOException?e)?{
    ???????????????e.printStackTrace();
    ???????????}?finally?{
    ???????????????//關閉資源
    ???????????????try?{
    ???????????????????if(pw?!=?null)??pw.close();
    ???????????????????if(osw?!=?null)??osw.close();
    ???????????????????if(br?!=?null)??br.close();
    ???????????????????if(isr?!=?null)??isr.close();
    ???????????????????if(is?!=?null)??is.close();
    ???????????????????if(socket?!=?null)??socket.close();
    ???????????????}?catch?(IOException?e)?{
    ???????????????????e.printStackTrace();
    ???????????????}
    ???????????}
    ???????}
    ???}
    }
    查看全部
  • 基于udp通信:

    http://img1.sycdn.imooc.com//607d88bf0001df2706000442.jpg

    http://img1.sycdn.imooc.com//607d88e50001c42f06490390.jpg

    查看全部
  • Socket socket=serverSocket.accept();

    查看全部
    1. URL--統一資源定位符=協議名稱:資源名稱

    2. java.net提供URL類表示URL? ?

    1.URL類中的常用方法:

    //創建一個URL對象

    ? ? URL url = new URL("http://www.baidu.com");??

    ? ? URL url1 = new URL(url, "/index.html?usrname=lqq#test");

    //url的常用方法

    ? ? System.out.println("URL主機名稱:"+url1.getHost());

    ? ? System.out.println("URL協議:"+url1.getProtocol());

    ? ? System.out.println("URL端口:"+url1.getPort());

    ? ? System.out.println("URL文件路徑:"+url1.getPath());

    ? ? System.out.println("URL查詢字符串:"+url1.getQuery());

    ? ? System.out.println("URL相對路徑:"+url1.getRef());

    ? ? System.out.println("URL文件名:"+url1.getFile());? ?


    2.通過URL獲取html文件內容:

    public static void main(String[] args) throws IOException {
    ? ?URL url=new URL("http://www.snnu.edu.cn");
    ? ?InputStream is =url.openStream();
    ? ?InputStreamReader isr=new InputStreamReader(is);
    ? ?BufferedReader bufferedReader = new BufferedReader(isr);
    ? ?String data=bufferedReader.readLine();
    ? ?while (data!=null){
    ? ? ? ?System.out.println(data);
    ? ? ? ?data=bufferedReader.readLine();
    ? ?}
    ? ?bufferedReader.close();
    ? ?isr.close();
    ? ?is.close();
    }

    查看全部
  • 網絡基礎知識

    地址、端口號、協議


    java 提供的網絡功能有四大類

    1. InetAddress :用于標識網絡上的硬件資源

    2. URL:統一資源定位符 通過URL可以直接讀取或寫入網絡上的數據

    3. Sockets:使用TCP協議實現網絡通信的Socket相關的類

    4. Datagram:使用UDP協議,將數據保存在數據報中,通過網絡進行通信。

    ?

    查看全部
    0 采集 收起 來源:網絡基礎簡介

    2021-01-11

  • 通信模型啊


    查看全部
    0 采集 收起 來源:Socket 簡介

    2020-12-30

  • InetAddress.getLocalhost();獲取InetAddress實例

    http://img1.sycdn.imooc.com//5fec3a010001372b16400779.jpg

    查看全部
  • Socket編程

    1、網絡基礎知識

    2、InetAddress類

    3、URL

    4、TCP編程(Socket)

    5、UDP編程(Datagram)

    IP、端口、協議(共同語言)

    tcp/ip模型?物理層、數據鏈路層、網絡層、傳輸層、應用層

    端口號范圍0~65535,0~1023為系統保留

    Java網絡功能四大類:InetAddress、URL、Socket、Datagram


    查看全部
    0 采集 收起 來源:網絡基礎簡介

    2020-12-30

  • 多線程的知識點http://img1.sycdn.imooc.com//5fe99cb600015a4606780079.jpg

    查看全部
  • http://img1.sycdn.imooc.com//5fe99b540001c0f508100463.jpg

    Socket通信模型

    查看全部
  • 實際應用時是以對象的形式進行傳輸

    查看全部
    0 采集 收起 來源:Socket 總結

    2020-11-18

  • 不必關閉輸入輸出流

    查看全部
    0 采集 收起 來源:Socket 總結

    2020-11-18

舉報

0/150
提交
取消
課程須知
本課程是 Java 開發課程的高級課程,需要對 Java 中的面向對象、IO、多線程,以及網絡相關知識有一定的基礎
老師告訴你能學到什么?
1、網絡相關的基礎知識 2、Java 中網絡相關 API 的應用 3、實現基于 TCP 的 Socket 編程 4、實現基于 UDP 的 Socket 編程

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!