Linux Systems Programming: Network Programming¶
This course covers the socket interface and some of the protocols that are supported by it, together with the programming paradigms that are common with networking.
Course Outline¶
Network programming basics. The socket interface is defined in abstract terms, not mentioning any of TCP/IP, or Bluetooth or … .
Systemcalls:
socket()
,connect()
,bind()
,listen()
,accept()
Stream communication: connection establishment and communication
Datagrams: connectionless communication
Error scenarios
Adress families
TCP/IP. Network programming on The Internet
TCP and UDP
Address conversion routines
DNS-Lookup
IPv4 and IPv6
UNIX Domain Sockets. An interprocess communication mechanism for processes running on the same machine.
CAN-Bus. CAN (Controller Area Network) fits itself into the Linux network stack.
Event loops (select/poll/epoll).
Event driven programming
Nonblocking connection establishment
Nonblocking IO
Other applications of events: timers (via timer file descriptors), events (via event file descriptors)
Prerequisites¶
A solid understanding of the C programming language is helpful. Fun with low-level hacking is required.