Всем привет!
Объясните пожалуйста, почему нет устройства eth0 в системе? Почему писать напрямую в tty можно, а сеть надо программировать только с помощью всем известных connect(), bind() и т.д.?
Всем спасибо
писать/читать в сетевое устройство (read() и write(), к примеру)
Модератор: Модераторы разделов
-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
писать/читать в сетевое устройство
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: писать/читать в сетевое устройство
А что Вас смущает? Вобщето, есть такое устройство, /dev/net/rl0 - это моя сетевая карта. Но это устройство на канальном уровне (до которого впринципе можно достучаться). Поверх него натянут tcp, sctp, - connect/bind как раз и предназначены для доступа к этим протоколам.
-
sendmoreinfo
- Сообщения: 50
Re: писать/читать в сетевое устройство
Потому что приложению не интересно, через какой физический интерфейс оно общается с внешним миром.
-
DaemonTux
- Сообщения: 1480
- Статус: Юный падаван
- ОС: Gentoo
Re: писать/читать в сетевое устройство
Если нужно работать с сетевой подсистемой на низкому уровне то для этого существуют raw сокеты.
Vladivostok Linux User Group
-
RasenHerz
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: писать/читать в сетевое устройство
потому что сетевые устройства - отдельный вид устройств, совмещающих в себе свойства символических и блочных устройств. для записи\чтения данных в\из сетевого интерфейса на уровне ядра используются буферы сокетов, а не буферы или кэши(хотя они тоже есть), плюс ко всему все это дело абстрагируется для системы в целом(по сути Linux все равно как вы соеденены с сетью).
сам собой напрашивается вопрос - зачем вам писать напрямую в устройство? что даст вам к примеру, следующее echo "Hello" > /dev/eth0?
-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: писать/читать в сетевое устройство
RasenHerz писал(а): ↑13.09.2008 07:38потому что сетевые устройства - отдельный вид устройств, совмещающих в себе свойства символических и блочных устройств. для записи\чтения данных в\из сетевого интерфейса на уровне ядра используются буферы сокетов, а не буферы или кэши(хотя они тоже есть), плюс ко всему все это дело абстрагируется для системы в целом(по сути Linux все равно как вы соеденены с сетью).
Жаль, я думал, что в Linux "все файлы", и я могу перенаправить поток в любой файл (даже если это сетевое устройство).
Дак откуда ж я знаю? Я не могу ответить на этот вопрос пока не попробую
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: писать/читать в сетевое устройство
AestheteAnimus писал(а): ↑12.09.2008 21:25А что Вас смущает? Вобщето, есть такое устройство, /dev/net/rl0 - это моя сетевая карта. Но это устройство на канальном уровне (до которого впринципе можно достучаться). Поверх него натянут tcp, sctp, - connect/bind как раз и предназначены для доступа к этим протоколам.
Вот что за не справедливость?
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)