meta data for this page
This is an old revision of the document!
CT30A5001 - Network Programming
This is just a place to store some course related material because of limitations of Noppa. This is not the main information channel for course Network Programming. Here you will find the descriptions of assignments and links to various documentations and tutorials. See course main pages for more information about course arrangements.
Introduction exercises, slides, example codes etc.
!!READ THESE BEFORE YOU START WORKING ON ASSIGNMENTS!!
Generic instructions and requirements [updated 20.8.2012]
Generic features to implement [updated 20.8.2012]
How to send an assignment [updated 20.8.2012]
How to use Subversion version control [updated 20.8.2012]
How assignments are evaluated [updated 22.8.2012]
Attending to exercises [updated 16.8.2011]
- APPARENTLY YOU NEED TO HAVE AN “OLD” ACCOUNT (NO NUMBERS) TO ACCESS SSH.LUT.FI AS IT IS NOT MAINTAINED ANYMORE…
There are 6 assignments and one home exam (big assignment). The descriptions and specifications of assignments are stored only here and will be updated if needed.
Assignment1: TCP radio station, deadline 13.9.2012 @ 23:59
Assignment2: TCP multiuser chat, deadline 27.9.2012 @ 23:59
Assignment3: UDP aphorism exchange system, deadline 11.10.2012 @ 23:59
Assignment4: Multicast (TBA), deadline 25.10.2012 @ 23:59
Assignment5: SCTP (TBA), deadline 1.11.2012 @ 23:59
Assignment6: RFC implementation (TBA), deadline 15.11.2012 @ 23:59
HOME EXAMINATION (TBA), deadline 3.12.2012 @ 8:59
Documents, standards, tutorials
Here are some references to material that can be found useful while working on assignments.
C coding and tools (compilers, debuggers, memory analyzers)
GDB Tutorial (short)
Debugging with GDB (long)
DDD: Data Display Debugger “GDB with GUI”
DDD tutorial (long)
C and Network Programming
- It is highly recommended to go through the section 23!!
- See 23.1.2. Lookup Functions for brief explanation of correct usage of
Byte Alignment - see this if you're even thinking about sending structs.
- Pages are old (skip history) but the process of POP3 is explained thoroughly.
Better networking with SCTP by IBM/M. Tim Jones
Why is SCTP needed given TCP and UDP are widely available? By Randall Stewart, Paul D. Amer
.. If you find good links, books, etc. please email info to assistant.
Packing data to character buffer
In previous years some people had problems with packing integers to character buffers so here is an example about how to do it. Just remember to keep track of the amount of bytes each integer reserves from the buffer used for storing data.
//PACK *(type_of_the_value_after_htons*)&buffer_holding_data[position_to_store] = htons(value_to_store); //UNPACK int retrieved_value = ntohs(*(type_of_the_value_in_buffer*)&buffer_holding_data[position_from_to_retrieve]);
Tweaking Linux networking
Find out which header to include
If you have problems finding out which header has defined certain variable, use:
find /usr/include/|xargs grep -s -e "PARAMETER_TO_SEARCH"
/usr/include/ from the include line and use the rest as include. E.g. if searching for
find /usr/include/*|xargs grep -s -e "IPV6_MULTICAST" /usr/include/i386-linux-gnu/bits/in.h:#define IPV6_MULTICAST_IF 17 /usr/include/i386-linux-gnu/bits/in.h:#define IPV6_MULTICAST_HOPS 18 /usr/include/i386-linux-gnu/bits/in.h:#define IPV6_MULTICAST_LOOP 19 /usr/include/linux/in6.h:#define IPV6_MULTICAST_IF 17 /usr/include/linux/in6.h:#define IPV6_MULTICAST_HOPS 18 /usr/include/linux/in6.h:#define IPV6_MULTICAST_LOOP 19
Version Control with Subversion online book