CSEE 4119 Computer Networks Programming Assignment 1 Jahyun Kim (jk3111) This program must have "-Djava.net.preferIPv4Stack=true" flag in order to work with the wireless network. The examples of running the program with wireless network are: java -Djava.net.preferIPv4Stack=true UdpChat -c x 192.168.0.17 2000 5000 java -Djava.net.preferIPv4Stack=true UdpChat -s 2000 This program provides client to client chatting via UDP protocol. The server only keeps the list of clients and offline messages. A client talks to another client directly from one port to another. Both the server and client implement two sockets, one regular quote to quote socket and one multicast socket. The regular socket is used for communication with clients such as for registration, de-registration, or saving or loading offline messages. The multicast socket is used for broadcasting the updated client table to all available clients. Each client receives the table of clients immediately after it has been updated in the server. For all communications with the server, the timeout is 5 times 500 msec and for communications with clients, the timeout is just single 500 msec period. The client implements multithreads (sender and receiver) in order to simultaneously send and receive packets. The acknowledgments are sent from the receiver thread.