2. Process 1 sends three messages successively to process 2. What is the possible order in which the message may arrive at process 2 if
a. connectionless socket is used to send each message?
b. connection-oriented socket is used to send each message?
3. In the setSoTimeout method for the datagramSocket (or other socket classes, what happens if the timeout period is set to 0? Does it mean that the timeout happens immediately (since the period is 0)? Consult the online Java API to find the answer.
4. Write a Java code fragment that may appear in a main method to open a datagram socket for receiving a datagram of up to 100 bytes, timing out in 5 seconds. If a timeout does occur, a message "timed out on receive" should be displayed on screen.
6. This exercise uses EchoServer1 and EchoClient1, which use connectionless datagram sockets for the Echo service.
Compile Echo*1.java (javac Echo*1.java) Then:
a. Run the programs by starting the server first (don't forget to specify a port number as a command-line argument), then the client. Conduct a session and observe the diagnostic messages displayed on both sides. Describe your observations of the sequence of events.
b. With the server running, start two clients in separate windows. Can you conduct the two client sessions in parallel? Describe and explain your observations.
Exercise 6. Open a new folder. Copy all the source files of the Hello example to the folder. Add code in the sayHello method of HelloImpl.java so that there is a 5-second delay before the method returns. This has the effect of artificially lengthening the latency for each invocation of the method. Compile and start the server.
In separate screens, start two or more clients. Observe the sequence of events displayed on the screens. Can you tell if the method calls are executed by the object server concurrently or iteratively? Explain.
Exercise 7. Open a new folder. Copy all the source files of the Hello example to the folder. Modify the sayHello method so that an argument, a name string, is passed in as an argument, and the return string is the string "Hello!" concatenated with the name string.
a. Show the code modifications.
b. Recompile and run the server and then the client. Describe and explain what happened.
c. Run rmic again to generate the new proxies for the modified interface, and then run the server and the client.
Hand the source listings and a scripts of the run outcomes.