package Ġchat Ċ Ċ import Ġjava . util . Scanner Ċ import Ġauxiliary . Chat Mult icast Connection Ċ import Ġauxiliary . Chat Udp Connection Ċ import Ġjava . net . Socket Exception Ċ Ċ class ĠClient Ġ{ Ċ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ @ Jvm Static Ċĉ ĉ fun Ġmain ( args : ĠArray < String >) Ġ{ Ċĉĉ ĉ val Ġinput Ġ= ĠScanner ( System .` in `) ĊĊĉĉ ĉ println (" Type Ġyour Ġnickname :") ĊĊĉĉ ĉ val Ġnickname Ġ= Ġinput . next () Ċĉĉ ĉ mult icast ( input , Ġnickname ) Ċĉ ĉ } ĊĊĉ ĉ @ Jvm Static Ċĉ ĉ fun Ġudp ( input : ĠScanner , Ġnickname : ĠString ) Ġ{ Ċĉĉ ĉ println (" Type Ġthe Ġserver 's Ġip : Ġ") Ċĉĉ ĉ // 2 2 4 . 3 . 2 9 . 7 1 ĊĊĉĉ ĉ val Ġserver IP Ġ= Ġinput . next () ĊĊĉĉ ĉ println (" Type Ġthe Ġserver 's Ġport : Ġ") Ċĉĉ ĉ // 1 0 0 0 0 ĊĊĉĉ ĉ val Ġserver Port Ġ= Ġinput . nextInt () ĊĊĉĉ ĉ val Ġchat Ġ= ĠChat Udp Connection ( server IP , Ġserver Port ) ĊĊĉĉ ĉ println (" Connection Ġestablished . ĠType ĠEXIT Ġto Ġexit Ġthe Ġchat ") ĊĊĉĉ ĉ var Ġmessage Ġ= Ġinput . next () ĊĊĉĉ ĉ Thread ( Runnable Ġ{ Ċĉĉĉ ĉ try Ġ{ Ċĉĉĉĉ ĉ while Ġ( true ) Ċĉĉĉĉĉ ĉ println ( chat . read Message ()) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ catch Ġ( e : ĠSocket Exception ) Ġ{ ĊĊĉĉĉ ĉ } Ċĉĉ ĉ }). start () ĊĊĉĉ ĉ while Ġ( message Ġ!= Ġ" EXIT ") Ġ{ Ċĉĉĉ ĉ chat . send ( message ); ĊĊĉĉĉ ĉ message Ġ= Ġinput . next () Ċĉĉ ĉ } ĊĊĉĉ ĉ chat . close () Ċĉ ĉ } ĊĊĉ ĉ @ Jvm Static Ċĉ ĉ fun Ġmulticast ( input : ĠScanner , Ġnickname : ĠString ) Ġ{ Ċĉĉ ĉ println (" Type Ġthe Ġserver 's Ġip : Ġ") Ċĉĉ ĉ // 2 2 4 . 3 . 2 9 . 7 1 Ċĉĉ ĉ // 2 3 5 . 0 . 0 . 0 ĊĊĉĉ ĉ val Ġserver IP Ġ= Ġinput . next () ĊĊĉĉ ĉ println (" Type Ġthe Ġserver 's Ġport : Ġ") Ċĉĉ ĉ // 1 0 0 0 0 Ċĉĉ ĉ // 1 2 3 6 ĊĊĉĉ ĉ val Ġserver Port Ġ= Ġinput . nextInt () ĊĊĉĉ ĉ val Ġchat Ġ= ĠChat Mult icast Connection ( server IP , Ġserver Port ) ĊĊĉĉ ĉ println (" Connection Ġestablished . ĠType ĠEXIT Ġto Ġexit Ġthe Ġchat ") ĊĊĉĉ ĉ var Ġmessage Ġ= Ġinput . next () ĊĊĉĉ ĉ Thread ( Runnable Ġ{ Ċĉĉĉ ĉ try Ġ{ Ċĉĉĉĉ ĉ while Ġ( true ) Ċĉĉĉĉĉ ĉ println ( chat . read Message ()) Ċĉĉĉ ĉ } Ċĉĉĉ ĉ catch Ġ( e : ĠSocket Exception ) Ġ{ ĊĊĉĉĉ ĉ } Ċĉĉ ĉ }). start () ĊĊĉĉ ĉ while Ġ( message Ġ!= Ġ" EXIT ") Ġ{ Ċĉĉĉ ĉ chat . send ( nickname Ġ+ Ġ": Ġ" Ġ+ Ġmessage ); ĊĊĉĉĉ ĉ message Ġ= Ġinput . next () Ċĉĉ ĉ } ĊĊĉĉ ĉ chat . close () Ċĉ ĉ } Ċ ĉ } Ċ }