[Description] The process of the communications between your client program and dvServer program is the following: 1. start the server program. (See the Test Program Usage section) 2. start your client program. 3. C ---> S, client initiates TCP connection to server. 4. C <--- S, server sends the initial information to client. 5. C ---> S, client sends 3 bytes including: isPoisonReverse and port, ex. 3000. 6. client and server close the TCP socket. 7. client opens the UDP socket and waits to exchange distance vectors. (client should bind its UDP socket to the port in 5.) server will delay 1 sec and simulate 6 nodes on 6 different UDP sockets to exchange distance vectors with each other. 8. client program should print out distance table everytime your table gets updated. 9. If client program works fine, it should achieve a converged state. [Test Program Usage] # To run the dvServer with your client program type: java dvServer [Server's Port] [isSelfTest] Example:java dvServer 2000 0 # To run the dvServer "without" your client program (This is just an additional option which might help you understand the assignment) Usage: java dvServer [Server's Port] [isSelfTest] Example:java dvServer 2000 1 P.S. The port nodethread listen from 6001 to 6006, do not use the same port here. [Binary packet] #Initial information info = "00751521485466" info[0]:network id info[1]:network id(cont.d) which is 0 info[2]:total numbers in the network which is 7 info[3]:numbers of your neighbors which is 5 info[4]:1st neighbor's node id which is 1. info[5]:1st neighbor's distance which is 5. info[6]:2nd neighbor's node id which is 2. info[7]:2nd neighbor's distance which is 1. info[8]:3rd neighbor's node id which is 4. info[9]:3rd neighbor's distance which is 8. info[10]:4th neighbor's node id which is 5. info[11]:4th neighbor's distance which is 4. info[12]:5th neighbor's node id which is 6. info[13]:5th neighbor's distance which is 6. #Distance vector pakcet = "001705000107-1-1-1-1-1-1" network id: packet[0]&[1] which is 0 node id: packet[3] which is 1 L: packet[4] which is 7 Do:packet[5]&[6] which is 5 D1:packet[7]&[8] which is 0 D2:packet[9]&[10] which is 1 D3:packet[11]&[12] which is 65535 means unkown D4:packet[11]&[12] which is 65535 means unkown D5:packet[11]&[12] which is 65535 means unkown D6:packet[11]&[12] which is 65535 means unkown Source Node ID: 1 Destination: 0 Weight: 5 Destination: 1 Weight: 0 Destination: 2 Weight: 1 Destination: 3 Weight: 7 Destination: 4 Weight: 65535 Destination: 5 Weight: 65535 Destination: 6 Weight: 65535 [Test Topology] I also attached the graph of topology. Your client is node 0. The server program will play the nodes 1 - 6 using ports from 6001 to 6006. Good luck! --TA