Чтения, инструменты и библиотеки для низкоуровневого, сетевого, программного обеспечения на С - PullRequest
1 голос
/ 18 февраля 2009

Я скоро закончу обучение в области электроники и ТСХ, и у меня есть приличный опыт в области ООП программирования на PHP и Java.
Теперь я хотел бы попробовать начать карьеру программиста на Си.

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

Поэтому я хотел бы спросить, что, по вашему мнению, мне следует прочитать, учитывая, что я уже могу написать что-то на C, но ничего особенного, и что я пару раз читал K & R.

Если вам известны какие-либо инструменты или библиотеки (например, libevent и libev), которые де-факто являются стандартами в области низкоуровневого программирования, связанного с сетью, которые также было бы неплохо узнать.

Ответы [ 7 ]

2 голосов
/ 18 февраля 2009

Нужно читать книги:

  • TCP / IP Иллюстрированный, Стивенс
  • Сетевое программирование UNIX, Стивенс и др.

Сетевой код системного уровня (вы проявили интерес к драйверам и т. Д.) См. Исходники OpenBSD , поскольку он плотный, чистый и стандартные сетевые API-интерфейсы почти полностью основаны на BSD.

1 голос
/ 18 февраля 2009

Руководство Beej по сетевому программированию - хорошее место для начала. Если вы хотите пройти по кроличьей норе, то, как и многие другие, рекомендовали взглянуть на сетевое программирование Unix, тома 1-2 У. Ричарда Стивенса.

1 голос
/ 18 февраля 2009

В зависимости от того, на каком низком уровне вы хотите идти. Существует небольшой стек под названием uIP который хорошо читается, хорошо документирован и имеет несколько статей, написанных об этом. Это намного ближе к аппаратному обеспечению, чем к любому программированию сокетов / io в Linux, поскольку нет никакого ядра, которое могло бы помешать.

Возможно, вы также захотите взглянуть на tcpdump, его хороший сниффер, основанный на cli, (написанный на c), чтобы вы могли использовать его так же, как разбирать!

0 голосов
/ 18 февраля 2009

Не совсем специфично для C, но анализаторы пакетов, такие как Wireshark, могут быть очень полезны для тестирования и отладки сетевых программ.

0 голосов
/ 18 февраля 2009

Я использовал это "Мини-HOWTO по программированию портов ввода / вывода Linux" несколько раз. Это код С.

Существует также ряд примеров кода C для последовательного ввода-вывода .

0 голосов
/ 18 февраля 2009

Как насчет источника libcurl? Взгляните здесь .

...