Java--网络编程--入门介绍

  1. 网络概念的介绍:
  2. IP地址的概念介绍:

  3. 域名和端口号
  4. 网络协议:

  5.  TCP与UDP协议的区别(传输层):

  6.  InterAddress:

    1. package com.model.mehtod;
      
      import java.net.InetAddress;
      import java.net.UnknownHostException;
      import java.util.Arrays;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 20:18
       * 演示 常用方法 InetAddress 类的使用
       */
      public class MethodDemo01 {
          public static void main(String[] args) throws UnknownHostException {
      //        1.获取本机的InetAddress对象
              InetAddress localHost=InetAddress.getLocalHost();//获取本机的InetAddress对象
              System.out.println(localHost);//DESKTOP-EU9P6DM/192.168.56.1
      //          2.根据主机名,获取到InetAddress对象
              InetAddress host1 = InetAddress.getByName("DESKTOP-EU9P6DM");
              System.out.println(host1);//DESKTOP-EU9P6DM/192.168.56.1
      //        根据ip地址获取到对应
              InetAddress byAddress = InetAddress.getByAddress("192.168.56.1", new byte[4]);
              System.out.println(byAddress);//192.168.56.1/0.0.0.0
      
      //        3.根据域名获取到InetAddress对象
              InetAddress allByName = InetAddress.getByName("www.baidu.com");
              System.out.println(allByName);//www.baidu.com/220.181.38.150
      //        4.通过InetAddress对象获取到,对应的地址
              String hostAddress = localHost.getHostAddress();
              System.out.println(hostAddress);//192.168.56.1
      //          5.通过InetAddress获取到主机名/或者是域名
              String hostName = localHost.getHostName();
              System.out.println(hostName);//DESKTOP-EU9P6DM
      
          }
      }
  7. Socket:

  8. TCP网络编程:

    1. package com.model.socket;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.net.ServerSocket;
      import java.net.Socket;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 20:52
       * 使用Socket(套接字)实现 TCP字节流编程实现
       */
      public class SocketDemo01 {
      //    服务端代码实现,监听9999端口号
          public static void main(String[] args) throws IOException {
      //       1. 新建服务端的Socket,并监听9999端口号
      //        细节:要求本机没有其他的服务在监听9999端口号
      //        细节:这个serverSocket额可以通过accept()方法返回多个  Socket【多个客户端连接服务器的并发】
              ServerSocket serverSocket = new ServerSocket(9999);//一个serverSocket可以产生多个socket
              System.out.println("服务端新建套接字,监听9999端口号,等待客户端连接");
      //        2.进入到监听状态,当没有客户端连接时,程序会阻塞,等待连接
      //        知道有客户端连接,会将socket对象返回,继续执行后面的程序
              Socket socket = serverSocket.accept();//一次accept产生一个socket,供给一个客户端连接,可以产生多个socket共客户端连接
              System.out.println("有客户端连接成功:"+socket.getClass());
      //        3.通过socket获得字节输入流
              InputStream inputStream = socket.getInputStream();
      //        4.通过字节输入流,读取数据
              byte[] bytes = new byte[1024];
              int len=0;
              while((len=inputStream.read(bytes))!=-1){
                  System.out.println("客户端发送过来的消息:"+new String(bytes, 0, len));
              }
      //        5.关闭流
              inputStream.close();
              socket.close();
              serverSocket.close();
      
      
          }
      }
    2. package com.model.socket;
      
      import java.io.IOException;
      import java.io.OutputStream;
      import java.net.InetAddress;
      import java.net.Socket;
      import java.net.UnknownHostException;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 21:06
       * Socket套接字
       * 实现TCP编程
       */
      public class SocketDemo02 {
      //    客户端的代码实现
          public static void main(String[] args) throws IOException {
      //        1.获得连接,的到socket对象
              Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
              System.out.println("客户端连接成功,获得socket对象:"+socket.getClass());
      //        2.连接成功后,通过socket,的到字节输出流,向服务端发送数据
              OutputStream outputStream = socket.getOutputStream();
      //        3.通过字节输出流对象,想Socket通道中写入数据
              outputStream.write("hello,zzh".getBytes());
              System.out.println("客户端退出~");
      //        4.关闭流和socket
              outputStream.close();
              socket.close();
          }
      }
  9. TCP网络编程2

    1. package com.model.socket;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.io.OutputStream;
      import java.net.ServerSocket;
      import java.net.Socket;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 20:52
       * 使用Socket(套接字)实现 TCP字节流编程实现2
       */
      public class SocketDemo03 {
      //    服务端代码实现,监听9999端口号
          public static void main(String[] args) throws IOException {
      //       1. 新建服务端的Socket,并监听9999端口号
      //        细节:要求本机没有其他的服务在监听9999端口号
      //        细节:这个serverSocket额可以通过accept()方法返回多个  Socket【多个客户端连接服务器的并发】
              ServerSocket serverSocket = new ServerSocket(9999);//一个serverSocket可以产生多个socket
              System.out.println("服务端新建套接字,监听9999端口号,等待客户端连接");
      //        2.进入到监听状态,当没有客户端连接时,程序会阻塞,等待连接
      //        知道有客户端连接,会将socket对象返回,继续执行后面的程序
              Socket socket = serverSocket.accept();//一次accept产生一个socket,供给一个客户端连接,可以产生多个socket共客户端连接
              System.out.println("有客户端连接成功:"+socket.getClass());
      //        3.通过socket获得字节输入流
              InputStream inputStream = socket.getInputStream();
      //        4.通过字节输入流,读取数据
              byte[] bytes = new byte[1024];
              int len=0;
              while((len=inputStream.read(bytes))!=-1){
                  System.out.println("客户端发送过来的消息:"+new String(bytes, 0, len));
              }
      //        4.1 回去客户端一个消息
              System.out.println("回复了一个消息");
              OutputStream outputStream = socket.getOutputStream();
              outputStream.write("hello,client".getBytes());
      //        设置输出结束标志
              socket.shutdownOutput();
      //        5.关闭流
              outputStream.close();
              inputStream.close();
              socket.close();
              serverSocket.close();
      
      
          }
      }
    2. package com.model.socket;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.io.OutputStream;
      import java.net.InetAddress;
      import java.net.Socket;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 21:06
       * Socket套接字
       * 实现TCP编程2
       */
      public class SocketDemo04 {
      //    客户端的代码实现
          public static void main(String[] args) throws IOException {
      //        1.获得连接,的到socket对象
              Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
              System.out.println("客户端连接成功,获得socket对象:"+socket.getClass());
      //        2.连接成功后,通过socket,的到字节输出流,向服务端发送数据
              OutputStream outputStream = socket.getOutputStream();
      //        3.通过字节输出流对象,想Socket通道中写入数据
              outputStream.write("hello,zzh".getBytes());
      //        设置输出结束标志
              socket.shutdownOutput();
      
      //        3.1读取到服务端回复的消息
              InputStream inputStream = socket.getInputStream();
              byte[] buff=new byte[1024];
              int readLen=0;
              while ((readLen=inputStream.read(buff))!=-1){
                  System.out.println("读取服务端回父的消息"+new String(buff,0,readLen));
              }
              System.out.println("客户端退出~");
      //        4.关闭流和socket
              outputStream.close();
              socket.close();
          }
      }
  10. TCP网络编程3:

    1. package com.model.socket;
      
      import java.io.*;
      import java.net.ServerSocket;
      import java.net.Socket;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 20:52
       * 使用Socket(套接字)实现 TCP字节流编程实现2
       */
      public class SocketDemo05 {
      //    服务端代码实现,监听9999端口号
          public static void main(String[] args) throws IOException {
      //       1. 新建服务端的Socket,并监听9999端口号
      //        细节:要求本机没有其他的服务在监听9999端口号
      //        细节:这个serverSocket额可以通过accept()方法返回多个  Socket【多个客户端连接服务器的并发】
              ServerSocket serverSocket = new ServerSocket(9999);//一个serverSocket可以产生多个socket
              System.out.println("服务端新建套接字,监听9999端口号,等待客户端连接");
      //        2.进入到监听状态,当没有客户端连接时,程序会阻塞,等待连接
      //        知道有客户端连接,会将socket对象返回,继续执行后面的程序
              Socket socket = serverSocket.accept();//一次accept产生一个socket,供给一个客户端连接,可以产生多个socket共客户端连接
              System.out.println("有客户端连接成功:"+socket.getClass());
      //        3.通过socket获得字节输入流
              InputStream inputStream = socket.getInputStream();
              InputStreamReader reader = new InputStreamReader(inputStream);
              BufferedReader bufferedReader = new BufferedReader(reader);
      //        4.通过字节输入流,读取数据
              String s = bufferedReader.readLine(); //服务端使用bufferWriter.newLine()结束,我们要使用readLine()进行读取
              System.out.println("客户端发送过来的消息:"+s);
      //        4.1 回去客户端一个消息
              System.out.println("回复了一个消息:");
              OutputStream outputStream = socket.getOutputStream();
              OutputStreamWriter writer = new OutputStreamWriter(outputStream);
              BufferedWriter bufferedWriter = new BufferedWriter(writer);
              bufferedWriter.write("hello,client,字符流,回复的内容".toCharArray());
              bufferedWriter.newLine();//插入一个换行符,表示写入内容的结束,注意要求方也是用readLine()
              bufferedWriter.flush();
      //        5.关闭流
              bufferedWriter.close();
              bufferedReader.close();
              socket.close();
              serverSocket.close();
      
      
          }
      }
    2. package com.model.socket;
      
      import java.io.*;
      import java.net.InetAddress;
      import java.net.Socket;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/7/23 21:06
       * Socket套接字
       * 实现TCP编程2
       */
      public class SocketDemo06 {
      //    客户端的代码实现
          public static void main(String[] args) throws IOException {
      //        1.获得连接,的到socket对象
              Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
              System.out.println("客户端连接成功,获得socket对象:"+socket.getClass());
      //        2.连接成功后,通过socket,的到字节输出流,向服务端发送数据
              OutputStream outputStream = socket.getOutputStream();
              OutputStreamWriter writer = new OutputStreamWriter(outputStream);
              BufferedWriter bufferedWriter = new BufferedWriter(writer);
      //        3.通过字节输出流对象,想Socket通道中写入数据
              System.out.println("向服务端希写入数据");
              bufferedWriter.write("hello,zzh,字符流".toCharArray());
              bufferedWriter.newLine();
              bufferedWriter.flush();
      //        3.1读取到服务端回复的消息
              InputStream inputStream = socket.getInputStream();
              InputStreamReader reader = new InputStreamReader(inputStream);
              BufferedReader bufferedReader = new BufferedReader(reader);
              String s = bufferedReader.readLine();
              System.out.println("读取服务端回父的消息"+s);
              System.out.println("客户端退出~");
      //        4.关闭流和socket
              bufferedWriter.close();
              bufferedReader.close();
              socket.close();
          }
      }

       

       

    3.  

posted @ 2021-07-23 22:06  张紫韩  阅读(55)  评论(0编辑  收藏  举报