meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:ct30a5000:start [2012/08/29 12:11]
julaakko [C and Network Programming]
courses:ct30a5000:start [2012/11/22 17:12]
julaakko [Assignments]
Line 34: Line 34:
   * ** APPARENTLY YOU NEED TO HAVE AN “OLD” ACCOUNT (NO NUMBERS) TO ACCESS SSH.LUT.FI AS IT IS NOT MAINTAINED ANYMORE...**   * ** APPARENTLY YOU NEED TO HAVE AN “OLD” ACCOUNT (NO NUMBERS) TO ACCESS SSH.LUT.FI AS IT IS NOT MAINTAINED ANYMORE...**
  
-[[example_codes|Example codes used on the course]]+**[[example_codes|Example codes used on the course]]**
  
 ===== Assignments ===== ===== Assignments =====
Line 53: Line 53:
   * [[assignment4notes|Notes about assignment 4 ]]   * [[assignment4notes|Notes about assignment 4 ]]
  
-[[assignment5|Assignment5:​ SCTP (TBA)]], deadline 1.11.2012 @ 23:59+[[assignment5|Assignment5:​ SCTP: Read, learn and implement "​Connect four" game]], deadline 1.11.2012 @ 23:59 
 +  * [[assignment5notes|Notes about assignment 5 ]]
  
-[[assignment6|Assignment6: ​RFC implementation (TBA)]], deadline 15.11.2012 @ 23:59 +[[assignment6|Assignment6: ​FTP client]], deadline 15.11.2012 @ 23:59 
- +  ​* ​[[assignment6notes|Notes about assignment 6 ]]
-[[home_examination|HOME EXAMINATION (TBA)]], deadline 3.12.2012 @ 8:59+
  
 +[[home_examination|HOME EXAMINATION Multiplayer deathmatch game]], deadline 3.12.2012 @ 8:59
 ===== Documents, standards, tutorials ===== ===== Documents, standards, tutorials =====
  
Line 88: Line 89:
  
 [[http://​valgrind.org/​|Valgrind]] [[http://​valgrind.org/​|Valgrind]]
 +  * Some useful parameters (see more from: ''​man valgrind''​) <​code>​
 +# Gives full details of each leak
 +--leak-check=full
 +
 +# Show also reachable and indirectly lost blocks of memory
 +--show-reachable=yes
 +
 +# Show the origin of uninitialized values
 +--track-origins=yes
 +</​code>​
  
 [[http://​valgrind.org/​docs/​manual/​QuickStart.html|Valgrind Quickstart]] [[http://​valgrind.org/​docs/​manual/​QuickStart.html|Valgrind Quickstart]]
Line 112: Line 123:
 [[http://​www.ietf.org/​rfc/​rfc3493.txt|Basic Socket Interface Extensions for IPv6]] [[http://​www.ietf.org/​rfc/​rfc3493.txt|Basic Socket Interface Extensions for IPv6]]
   * The "​official"​ documentation of __''​getaddrinfo()''​__ (**Section 6.1**) and __''​getnameinfo()''​__ (**Section 6.2**)   * The "​official"​ documentation of __''​getaddrinfo()''​__ (**Section 6.1**) and __''​getnameinfo()''​__ (**Section 6.2**)
-  * RFC descriptions are used as manual pages e.g. in Aptosid Linux distribution (Debian Sid)+  * RFC descriptions are used as manual pages e.g. in Aptosid Linux distribution (Debian Sid) but is replaced with kernel.org version after installing manpages-dev packet.
  
 [[http://​unlser1.unl.csi.cuny.edu/​faqs/​sock-faq/​html/​unix-socket-faq.html|Programming UNIX Sockets in C – FAQ]] [[http://​unlser1.unl.csi.cuny.edu/​faqs/​sock-faq/​html/​unix-socket-faq.html|Programming UNIX Sockets in C – FAQ]]
Line 123: Line 134:
  
 [[http://​en.wikipedia.org/​wiki/​Data_structure_alignment|Wikipedia article of byte alignment in data structures]] [[http://​en.wikipedia.org/​wiki/​Data_structure_alignment|Wikipedia article of byte alignment in data structures]]
-==== FTP ==== 
- 
-[[http://​www.faqs.org/​rfcs/​rfc959.html| RFC 959 - File Transfer Protocol]] 
- 
-[[http://​slacksite.com/​other/​ftp.html| Active FTP vs. Passive FTP]] 
- 
-==== HTTP ==== 
- 
-[[http://​www.faqs.org/​rfcs/​rfc1945.html| RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] 
- 
-[[http://​www.jmarshall.com/​easy/​http/​|HTTP Made Really Easy]] 
- 
-[[http://​www.faqs.org/​rfcs/​rfc2045.html| RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One]] 
- 
-[[http://​www.helpdesk.umd.edu/​topics/​email/​protocols/​315/​|Multipurpose Internet Mail Extensions (MIME) Encoding]] 
  
 ==== Multicast ==== ==== Multicast ====
Line 145: Line 141:
 [[http://​www.internet2.edu/​multicast/​|Multicast Working Group]] [[http://​www.internet2.edu/​multicast/​|Multicast Working Group]]
  
- +Oracle.com Programming Interfaces Guide documentation for SOLARIS (yes, SOLARIS is UNIX and Linux is not UNIX but these pages explain multicast in informative manner): 
-==== POP3 ==== +    ​* ​[[http://docs.oracle.com/cd/E19683-01/806-4125/​sockets-138/​index.html|Sending IPv4 Multicast Datagrams]] 
- +    ​* ​[[http://docs.oracle.com/cd/E19683-01/806-4125/sockets-5/index.html|Receiving IPv4 Multicast Datagrams]] 
-[[http://tools.ietf.org/html/rfc1939|RFC 1939 Post Office Protocol ​Version 3]] +    [[http://​docs.oracle.com/​cd/​E19683-01/​806-4125/​sockets-13/​index.html|Sending IPv6 Multicast Datagrams]] 
- +    ​* ​[[http://docs.oracle.com/cd/E19683-01/​806-4125/​sockets-149/​index.html|Receiving IPv6 Multicast Datagrams]]
-[[http://tcpipguide.com/free/t_TCPIPPostOfficeProtocolPOPPOP3.htm|The TCP/IP Guide TCP/IP Post Office Protocol (POP/POP3)]] +
-  Pages are old (skip history) but the process of POP3 is explained thoroughly+
- +
-==== TFTP ==== +
- +
-[[http://www.faqs.org/rfcs/rfc1350.html|RFC 1350 - The TFTP Protocol (Revision 2)]]+
  
 ==== SCTP ==== ==== SCTP ====
Line 170: Line 160:
  
 [[http://​www.isoc.org/​briefings/​017/​|Why is SCTP needed given TCP and UDP are widely available?​]] By Randall Stewart, Paul D. Amer [[http://​www.isoc.org/​briefings/​017/​|Why is SCTP needed given TCP and UDP are widely available?​]] By Randall Stewart, Paul D. Amer
 +
 +==== PROTOCOLS ====
 +
 +[[protocols_rfcs|Different protocol descriptions & RFCs & tutorials]]
 +
 ==== State machines ==== ==== State machines ====
  
Line 176: Line 171:
 [[http://​edu.pegax.com/​doku.php?​id=old_courses:​csa:​behaviormodel2009]] by [[http://​www.pegax.com|Pekka Jäppinen]] [[http://​edu.pegax.com/​doku.php?​id=old_courses:​csa:​behaviormodel2009]] by [[http://​www.pegax.com|Pekka Jäppinen]]
  
-.. If you find good links, books, etc. please email info to assistant. 
 ==== Packing data to character buffer ==== ==== Packing data to character buffer ====
  
Line 189: Line 183:
 ==== Bit shifting ====  ==== Bit shifting ==== 
 Following [[courses:​ct30a5000:​bit_shifting_example|example]] shows how to use bit shifting with binary or operations to construct a single 8 bit integer to contain packed information. Read about [[http://​www.gamedev.net/​reference/​articles/​article1563.asp|Bitwise operations in C]]. Following [[courses:​ct30a5000:​bit_shifting_example|example]] shows how to use bit shifting with binary or operations to construct a single 8 bit integer to contain packed information. Read about [[http://​www.gamedev.net/​reference/​articles/​article1563.asp|Bitwise operations in C]].
 +
 +==== Find out which header to include ====
 +
 +If you have problems finding out which header has defined certain variable, use: <code bash>​find /​usr/​include/​|xargs grep -s -e "​PARAMETER_TO_SEARCH"</​code>​
 +Exclude the ''/​usr/​include/''​ from the include line and use the rest as include. E.g. if searching for ''​IPV6_MULTICAST'':​ <code bash> ​
 +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
 +</​code>​
 +
 +Use the ''​in6.h''​ in ''/​usr/​include/​linux'':​ <code c>#​include <​linux/​in6.h></​code>​
  
 ==== Gnuplot ==== ==== Gnuplot ====
Line 204: Line 213:
 [[http://​www.ibm.com/​developerworks/​linux/​library/​l-hisock.html|Boost socket performance on Linux]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-hisock.html|Boost socket performance on Linux]]
  
-==== Find out which header to include ==== 
- 
-If you have problems finding out which header has defined certain variable, use: <code bash>​find /​usr/​include/​|xargs grep -s -e "​PARAMETER_TO_SEARCH"</​code>​ 
-Exclude the ''/​usr/​include/''​ from the include line and use the rest as include. E.g. if searching for ''​IPV6_MULTICAST'':​ <code bash> ​ 
-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 
-</​code>​ 
- 
-Use the ''​in6.h''​ in ''/​usr/​include/​linux'':​ <code c>#​include <​linux/​in6.h></​code>​ 
 ==== Subversion ==== ==== Subversion ====
  
Line 242: Line 237:
 Reception hour: Wednesday 1500 - 1600 Reception hour: Wednesday 1500 - 1600
  
 +.. If you find good links, books, etc. please email info to [[mailto:​jussi.laakkonen@lut.fi|assistant]].