送信と受信のウィンドウを作成 、公開 クラスDemo3_MoreThread { / ** * @paramの引数は、 * / パブリック 静的な 無効メイン(String []型引数を){ 新新)(スタート();.受信 新しい新しい送信()スタート();. } } クラスは、受信拡張スレッド{ 公共 空RUN(){ 試み{ DatagramSocketのソケット = 新新のDatagramSocket(6666)を; // ハーバーを作成するソケットと同等の作成します =のDatagramPacketのパケット新しい新規のDatagramPacketの(新しい新しい バイト [1024]、1024); // に対応するコンテナパケットを作成します ながら(trueに){ Socket.Receive(パケット); // 受信商品は バイト [] = ARR packet.getData()。 INT LEN = packet.getLength(); 文字列IP = packet.getAddress()はgetHostAddress();. のSystem.out.println(IP + ":" + 新しい新しい文字列(ARR、0 、LEN))。 } } キャッチ(IOExceptionをE){ e.printStackTrace(); } } } クラス送る拡張スレッド{ 公共 ボイドRUN(){ 試み{ DatagramSocketのソケットは = 新しい新しいのDatagramSocket(); //はハーバー作成するソケット同等を作成し 、スキャナSC = 新しい新しいスキャナを(System.in); 一方、(真の){ 文字列STR =sc.nextLine(); IF( "終了" .equals(文字列)) BREAK ; のDatagramPacketパケット = //は、パケットを作成するには、コンテナに作成することと同じである 新しい新しい。のDatagramPacket(str.getBytes()、str.getBytes()の長さを、InetAddress.getByNameは( "127.0.0.1")、6666 ); socket.send(パケット); // 送達 } Socket.close(); } キャッチ(IOExceptionをE){ e.printStackTrace(); } } }