Introduction to Unix Network Programming

[Home] [Class syllabus] [Useful links] [Assignments]

Instructor: Hung Q. Ngo

Course homepage: http://www.cse.buffalo.edu/~hungngo/classes/TMA-Training/UNP/

Course Description: this short course introduces basic elements of network programming in C under a typical Unix operating system. A tentative list of topics includes, but not limited to, the following:

Prerequisites: students are expected to have some rudimentary knowledge of computer networking in general, and a working knowledge of system programming in C/C++ under Unix/Linux (file I/O, processes, signal handling, make files, etc.)

At the end of the course, students are expected to know how to do network programming in C under Unix: TCP/UDP sockets, network I/O multiplexing, design a fairly complex network program following a specified protocol.

Work load: the only way to actually learn (network) programming is to actually program a non-toy application. There will be two programming assignments for this course. The first one is a simple assignment which can be completed within 2 days (of hard-work). This assignment is meant for students to get acquainted to basic socket API. The second assignment is to be done in two weeks: students are going to implement a simplified version of the Gnutella protocol called Simpella. Simpella is mostly the same as Gnutella. A correct implementation of Simpella should integrate easily into existing P2P networks that run Gnutella (such as Morpheus, Bearshare, or Limewire).

References: