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.