Introduction to Computer Networking

G. Leduc - INFO0010-4 and INFO0010-2 (ULg)

Last update : July 18th 2018

Second session guidelines available.

Information page for the programming assignment

This page is dedicated to materials and information about the programming assignment, split into two parts, to be realized in the context of the INFO0010-X course.

Students attending INFO0010-4 will have to develop the two parts of the assignment. They will work alone for the first part and in groups of two students for the second part.

Students attending INFO0010-2 will only develop the first part of the assignment and can work in groups of two students.

Second session

The schedule for the oral exam is not available yet.

Students who obtained a grade lower than 10/20 on their projects can resubmit them. The deadline is the 20th August via the submission platform. Guidelines of the first session still apply.



Java Sockets Slides about Socket programming in Java, including guidelines for the first part of the assignment.
Assignment #1 guidelines Guidelines for the first part of the assignment.
Feedback Feedback for the first part of the assignment.
Guidelines #2 Slides with guidelines for the second part of the assignment.



Assignment #1 Statement for the first part of the assignment.
Hard deadline is March, 25th 2018

Frequently asked questions
How can I represent 10 or 11 (for the number of tries) when I only have 1 digit?
Don't mix up digits and bytes. This is a byte oriented protocol, each byte being able to represent a value between 0 and 255.
What does the flush() method actually do?
The flush() method does not exactly work as explained in the practical session. The flush() method ensures that, if any buffering occured at the application level, the data will immediately arrive at its destination (which, in this case would be the operating system). For instance, if you are using the BufferedOutputStream class, a write() does not ensure that the operating system will receive the corresponding system call. However, a flush() in the application can never force TCP to do anything, its action is only to force the application to call the underlying layer (the OS). If you really want to send data as soon as it is ready in the Socket, you should disable Nagle's algorithm, using Socket.setTcpNoDelay(true).
Assignment #2 Statement for the second part of the assignment.
Hard deadline is May, 13th 2018