Про "Системное программирование UNIX": вот файл примеров http://www.lib.ru/CTOTOR/C_IN_UNIX/12.1.c
Здесь следующие приколы: 1) connect() в качестве 2-го параметра должна получать struct sockaddr, а в демке ей дают struct sockaddr_in. При этом, эти две структуры РАЗНЫЕ. И gcc посылает куда подальше, если пытаться в connect() передать struct sockaddr_in... Пришлось делать через struct sockaddr. 2) При попытке взять чего-то из сокета или из ассоциированого с сокетом файла (fgetc, fgets, recv, read), прога виснет. Собственно, и вопрос-то - почему виснет???