Reference no: EM13537
Project: Socket Programming - UDP
Objectives:
- Learn socket programming in Java: UDP
- Cement your understanding of reliable transfer protocols
Develop a reliable transfer protocol over UDP. Focus on a Stop- and-Wait protocol.
Overview
This framework provides:
- a template for the reliable transfer protocol implementation.
- a testing framework, with a graphical user interface.
How to use the testing framework later in the project description.
The main goal of this project is to implement a Stop-and-wait reliable transfer protocol based on the provided template.
- MyDataPacket,
- MyAckPacket,
- MyServerSocket and
- MySocket
The former two classes are used to handle data and ack packets, respectively. They are fully implemented. Implement the latter two classes, i.e., MyServerSocket and MySocket. These classes have the following interface:
class MySocket
{
public MySocket(InetAddress IPAddress, int portNumber)
public OutputStream getOutputStream()
}
class MyServerSocket
{
public MyServerSocket(int port)
public InputStream getInputStream()
}
These classes are quite similar to the TCP sockets available in Java: Socket and ServerSocket. Therefore, we make a few simplifications:
- No connection-level multiplexing. We assume that only one client at a time connects to a MyServerSocket open at a given port. Therefore, MyServerSocket has no accept method.
Furthermore, we are not going to implement any mechanisms for opening or closing of connections.
- Unidirectional transfer. Our sockets implement transfer of data in one direction only. To send data, MySocket must be used. To receive data, MyServerSocket is used.
Consequently, there is no getInputStream in MySocket and no getOutputSteam in MyServerSocket
A benefit of the above interface is that we can use it with all the familiar stream classes available in Java, such as DataOutputStream or BufferedReader. An example program that would use our sockets can look as follows:
// Sender (Client)
...
MySocket socket = new
MySocket(InetAddress.getHostByName("somhostname.edu"), 12345);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeBytes("Hello world!");
...
// Receiver (Server)
...
MyServerSocket serverSocket = new MyServerSocket(12345);
BufferedReader in = new BufferedReader(new
InputStreamReader(serverSocket.getInputStream()));
String sentence = in.readLine();
System.out.println("Received: " + sentence);
...