A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package exercise_internet;

  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. import java.util.Scanner;

  6. public class SendAndReceive {

  7.         public static void main(String[] args) {
  8.                 // 开启线程用于接收消息
  9.                 new Thread() {
  10.                         public void run() {
  11.                                 try {
  12.                                         receive();
  13.                                 } catch (Exception e) {
  14.                                         e.printStackTrace();
  15.                                 }
  16.                         };
  17.                 }.start();

  18.                 // 主线程发送消息
  19.                 try {
  20.                         send();
  21.                 } catch (Exception e) {
  22.                         e.printStackTrace();
  23.                 }
  24.         }

  25.         public static void send() throws Exception {
  26.                 System.out.println("send执行");
  27.                 DatagramSocket socket = new DatagramSocket();
  28.                 Scanner sc = new Scanner(System.in);
  29.                 while (true) {
  30.                         String line = sc.nextLine();
  31.                         DatagramPacket packet = new DatagramPacket(line.getBytes(), line.getBytes().length,
  32.                                         InetAddress.getByName("127.0.0.1"), 6666);
  33.                         socket.send(packet);
  34.                         if (line.equals("quit")) {
  35.                                 break;
  36.                         }
  37.                 }
  38.                 socket.close();
  39.                 System.out.println("send结束");
  40.         }

  41.         public static void receive() throws Exception {
  42.                 System.out.println("receive执行");
  43.                 DatagramSocket socket = new DatagramSocket(6666);
  44.                 DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
  45.                 while (true) {
  46.                         socket.receive(packet);
  47.                         byte[] b = packet.getData();
  48.                         int len = packet.getLength();
  49.                         String ip = packet.getAddress().getHostAddress();
  50.                         int port = packet.getPort();
  51.                         String line = new String(b, 0, len);
  52.                         if (line.equals("quit")) {
  53.                                 break;
  54.                         }
  55.                         System.out.println(ip + ":" + port + ":" + line);
  56.                 }
  57.                 socket.close();
  58.                 System.out.println("receive结束");
  59.         }
  60. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马