- Forward


UDP for Text Transport
An Introduction with Examples in Java


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

User Datagram Protocol (UDP)
Back SMYC Forward
  • Position in the Protocol Stack:
    • Transport Layer (above the Network Layer)
    • Uses the Internet Protocol (IP)
  • What it Provides:
    • Port addressing (i.e., multiplexing)
    • Corruption detection (using a checksum)
  • Implications:
    • Packets may not be received in order
    • Packets may not be received
    • Fast
An Overview of UDP in Java
Back SMYC Forward
  • Datagrams:
    • DatagramPacket
    • The destination address and port is in the DatagramPacket
  • Sending Datagrams:
    • Use a DatagramSocket
  • Receiving Datagrams:
    • Use a DatagramSocket
Sending Text Datagrams
Back SMYC Forward

Use any Available Port on the Sender

javaexamples/internet/UDPMessageSender.java (Fragment: 1)
 
Sending Text Datagrams (cont.)
Back SMYC Forward

The Process

javaexamples/internet/UDPMessageSender.java (Fragment: 2)
 
Receiving Text Datagrams
Back SMYC Forward

Must Listen to a Particular Port

javaexamples/internet/UDPMessageReceiver.java (Fragment: 1)
 
Receiving Text Datagrams (cont.)
Back SMYC Forward

The Process

javaexamples/internet/UDPMessageReceiver.java (Fragment: 2)
 
Be Careful!
Back SMYC Forward
  • The Issue:
    • The receive() method blocks
  • Dealing with this Issue:
    • Have the receive() method time-out periodically if necssary (by calling the setSoTimeout() method before receive())
Putting it All Together
Back SMYC Forward

A UDPMessageSender

javaexamples/internet/UDPMessageSender.java
 
Putting it All Together (cont.)
Back SMYC Forward

A UDPMessageReceiver

javaexamples/internet/MessageListener.java
 
javaexamples/internet/UDPMessageReceiver.java
 
An Example
Back SMYC Forward
javaexamples/map1/UDPPositionServer.java
 
javaexamples/map1/AbstractPositionSubject.java
 
javaexamples/map1/UDPPositionReceiver.java
 
javaexamples/map1/TrackingCanvas.java
 
UDP Multicast
Back SMYC Forward
  • Sending:
    • Construct a DatagramPacket that has an appropriate IP address (i.e., starts with 1110 so is in the range 224.0.0.0 - 239.255.255.255, but not below 224.0.0.255, all of which are reserved for use by routing protocols)
  • Receiving:
    • Create a MulticastSocket (that is bound to a port)
    • Call its joinGroup() method (passing it the multicast address)
    • Call its receive() method
    • Call its leaveGroup() method when done
There's Always More to Learn
Back -