Хорошие чтения по программированию на Unix/Linux?

хотя я не работал с сокетами профессионально, я нахожу их интересными. Я прочитал некоторую часть сетевого программирования Unix Ричардом Стивенсом (считается Библией, которую я предполагаю, поскольку она упоминается всеми, кого я прошу), но проблема заключается в том, что для примера требуется универсальный заголовок unp.h, который используется PIA.

Могут ли некоторые из вас предложить хорошее чтение для программирования сокетов в Unix/Linux? Учитывая, что я относительно опытный C/С++-кодер.

Ответы

Ответ 1

Каноническая ссылка - это сетевое программирование UNIX У. Ричарда Стивенса. upn.h - действительно просто вспомогательный заголовок, чтобы сделать примеры книг более ясными - он не делает ничего особенно волшебного.

Чтобы быстро и быстро встать и работать, трудно пройти мимо Beej Guide to Network Programming с использованием интернет-сокетов.

Ответ 4

APUE - это хороший способ познакомить вас с средой unix, а также с программированием на C в контекст unix, чтобы вы могли перейти к программированию сокетов.

Ответ 5

Помимо уже упомянутых книг Stevens, я нашел следующие два, чтобы быть действительно хорошими и относительно короткими, читал для проблем программирования TCP/IP (особенно ошибок и общих ошибок):

После этого вы, вероятно, захотите прочитать исходный код для сетевых приложений. Хорошая отправная точка - различные утилиты и приложения linux.

Ответ 6

Вы можете ссылаться на статью, которую я написал, когда я преподавал курс обучения в области компьютерных наук, Основы компьютерных сетей, на ufl.edu давным-давно: "A Crash Course в Unix TCP/IP Socket Programming" .

Документ старый. Я поражен тем, что, когда я обрушился на это, там еще полдюжины ссылок на него.

Некоторые из семантики компилятора и необходимые файлы заголовков, возможно, немного изменились за эти годы, но основы настройки сокетов UDP или TCP и обсуждение основных элементов DNS по-прежнему актуальны и сегодня.

Удачи!

Ответ 7

Это, по-видимому, классическая дилемма болота в бассейне или прыгающая голова сначала в глубокий конец.

FWIW Я считаю, что код оболочки Стивена тоже раздражает, и я изо всех сил пытался получить хотя бы некоторые из примеров, работающих на каждой платформе, на которой я их пробовал. При этом обертки скрывают в основном тривиальное обращение к ошибкам, которое было бы повторяющимся, непросвещенным и занимало больше места в уже большой книге. (Хотя справедливо, редакторы могут выбросить последнюю 1/4 книги, покрывающей XTI, чтобы освободить место.)

Сетевое программирование достаточно глубоко посвящено теме, в которой вы можете чередоваться с поверхностными волнами и делать пушечные ядра. Было упомянуто несколько хороших источников для быстрого старта, которые заставят вас пройти стадию "вау, я заработал". Но когда вам нужно подняться до "Мне нужно, чтобы это было надежным и надежным, потому что моя работа/продукт зависит от этого", вы поймете, что Стивенс, бородавки и все остальное, за его сверхъестественную способность предвидеть вашу текущую проблему.

Были главы работы Стивена, которые я успешно игнорировал годами. Но я был уверен, что они были там, когда я нуждался в них.

Ответ 8

Объединительный модуль UNIX Network Programming Volume 1/2 от W. Richard Stevens является легендарным.

Ithilgore также написал очень подробный документ raw сокеты.

Кроме того, Beej Guide to Socket Programming хорошо написан, прост для понимания и определенная рекомендация.

Независимо от того, что вы читаете, убедитесь, что вы пишете дополнительный код.

Ответ 9

Вы также рассматриваете более общую ссылку, Программирование систем Unix ™: связь, Concurrency и потоки Кэй А. Роббинс, Стивен Роббинс Prentice Hall ISBN: 0-13-042411-0

книга Ричарда Стивена - самая полная ссылка на эту конкретную тему

Ответ 10

Книга Майкла Керриска (он также поддерживает man-страницы Linux) интерфейс программирования Linux

есть все о программировании unix; главы от 57 до 61 находятся на сокетах.