This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I have a UDP client server pair that are supposed to communicate with each other by sending messages back and forth 1000 times. However, in my current program, it only does this once and then it hangs. My question is how can I modify UDPClient2.java and UDPServer2.java so that they can synchronize their communication for 1000 iterations.
Remember UDP is a stateless protocol, so if a packet is lost, it is lost. You are assuming that the receive in the complementary program starts before the send in the other program. If that does not happen then your packet is lost and your program hangs.
So after your send (whether sending the data or ack) you need to timeout after a certain time and then retry. And the timeouts in both the programs should be different based upon an initial shared key so both the programs do not time out at the same time.
<a href="http://www.auptyma.com" target="_blank" rel="nofollow">The Peak of Performance</a>