java-网络编程

1、UDP模式

  • 需要先运行接收端才能顺利的接收数据
  • 主要用到三个类:DatagramSocket、DatagramPacket、InetAddress

发送端

  • 创建发送端的Socket对象(DatagramSocket)
  • 创建数据,并把数据打包
  • 调用DatagramSocket对象的方法发送数据
  • 关闭发送端
public class UdpSendDemo {
  public static void main(String[] args) throws IOException {
    // 创建发送端的Socket对象(DatagramSocket)
    // DatagramSocket () 构造数据报套接字并将其绑定到本地主机上的任何可用端口
    DatagramSocket socket = new DatagramSocket();
    // 构造一个数据包,发送长度为length的数据包到指定 主机上的指定端口号
    byte[] bys = "你好,我是发送端".getBytes();
    InetAddress address = InetAddress.getByName("127.0.0.1");
    int port = 10087;
    // 创建数据,并把数据打包
    DatagramPacket dp = new DatagramPacket(bys, bys.length, address, port);
    socket.send(dp);
    // 关闭发送端
    socket.close();
  }
}

接收端

  • 1:创建接收端的Socket对象(DatagramSocket)
  • 2:创建-一个数据包,用于接收数据
  • 3:调用DatagramSocket对象的方法接收数据
  • 4:解析数据包,并把数据在控制台显示
  • 5:关闭接收端
public class UdpReceiveDemo {
  public static void main(String[] args) throws IOException {
    DatagramSocket socket = new DatagramSocket(10087);

    // 创建一个数据包,用于接收数据
    byte[] bys = new byte[1024];
    DatagramPacket dp = new DatagramPacket(bys, bys.length);

    // 调用DatagramSocket对象的方法接收数据
    socket.receive(dp);

    // 解析数据包,并把数据在控制台显示
    System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));

    // 关闭接收端
    socket.close();
  }
}

image

image
image

  • 广播和单播一致,只是把InetAddress的地址修改255.255.255.255

image

客户端

public class TcpClientDemo {
  public static void main(String[] args) throws IOException {
    Socket socket = new Socket("127.0.0.1", 9898);
    //OutputStream stream = socket.getOutputStream();
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stream));
    writer.write("Hello,社会主义好".getBytes());
    socket.close();
  }
}

服务端

public class TcpServerDemo {
  public static void main(String[] args) throws IOException {
    ServerSocket serverSocket = new ServerSocket(9898);
    Socket socket = serverSocket.accept();

    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
      System.out.println(line);
    }

    socket.close();
    reader.close();
  }
}
posted @ 2023-02-26 20:38  his365  阅读(8)  评论(0编辑  收藏  举报