The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

обратный адрес пакета, vasa (?), 25-Июл-01, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


3. "RE: обратный адрес пакета"  +/
Сообщение от Cheshiremail (?), 26-Июл-01, 11:48 
ну, там, вроде, еще есть чтой-то типа recvmsg, но этого я уже не помну :) см man recv :) или там в info тож чего-то, помнится, есть... даже немного подробней :)
Ответить | Правка | Наверх | Cообщить модератору

4. "RE: обратный адрес пакета"  +/
Сообщение от vasaemail (?), 26-Июл-01, 18:28 
Да, но мне нужно именно read().
Я перехватываю IO опереации над сокетами
и заранее не знаю какой функцией чтения
пользуется application.

Еще идеи ?

Ответить | Правка | Наверх | Cообщить модератору

5. "RE: обратный адрес пакета"  +/
Сообщение от XMan (?), 26-Июл-01, 19:26 
Стоп. С чем работает read и recv ? Правильно, только с сокетами, которые требуют соединения и имеют установленное соединение ! В частности, по протоколу TCP или UNIX-сокеты. А ты пытаешься примениять их ко всем сокетам ? Оригинально.
И что это за application ?
Ответить | Правка | Наверх | Cообщить модератору

6. "RE: обратный адрес пакета"  +/
Сообщение от vasaemail (?), 27-Июл-01, 05:49 
вышеназванные вызовы работают
и без соединения.
Пример -- UDP датаграммы.
А application - tftpd.
Ответить | Правка | Наверх | Cообщить модератору

11. "RE: обратный адрес пакета"  +/
Сообщение от XMan (?), 30-Июл-01, 14:42 
Хм... Кусок мана:

The recv call is normally used only on a connected socket (see connect(2)) and is identical to recvfrom with a NULL from parameter.

...

Ответить | Правка | Наверх | Cообщить модератору

13. "RE: обратный адрес пакета"  +/
Сообщение от Cheshiremail (?), 31-Июл-01, 15:45 
ну так ты гляди - видишь "normally"? :)))
а если "unnormally", то все подряд :))) только надо знать, как... Для того, чтобы знать, надо читать не только man, но и шарить по исходникам  :)))).
Как сказал однажды один человек (вроде бы, RZ), Unix - это один здоровый фильтр. Так вот, в системных вызовах типа "recv" и т.п. можно указывать (куда бы и как бы ни был прикручен сокет, даже если он просто открыт и не прикручен) любой способ фильтрации, применимый к конкретному случаю; а recvmsg является и фильтром, и запихивает в структуру все че можно об мессаге.
Во всяком случае, вышесказанное было верно для Linux'a на 2.2.17-м ядре :))).
Ответить | Правка | Наверх | Cообщить модератору

14. "RE: обратный адрес пакета"  +/
Сообщение от XMan (?), 02-Авг-01, 01:17 
О ! В самом конце ты приблизился к сути :))
Откуда ты знаешь, что в последующих ядрах будет точно так же ? Откуда ты знаешь, что в 2.2.17-ac1, например, не пропатчили это дело ?
Не будешь же ты лазить по исходникам каждого нового ядра или патча, чтобы посмотреть как оно там сейчас работает :))
Ответить | Правка | Наверх | Cообщить модератору

15. "RE: обратный адрес пакета"  +/
Сообщение от Cheshiremail (?), 02-Авг-01, 13:51 
Скажу так: я не знаю :) но предполагаю, что это не изменится с появлением новых ядер. Просто, как мне кажется, эти пути являются достаточно стандартными и патчить их никто не будет :), просто тогда многие полезные утилки перестанут работать :)
Ответить | Правка | Наверх | Cообщить модератору

16. "RE: обратный адрес пакета"  +/
Сообщение от XMan (?), 03-Авг-01, 17:48 
Хех :))
А как же переход с libc5 на libc6 ? Или забылыли уже, сколько было траха с переносом программ ? Приходилось держать обе версии либ, чтобы более менее работать нормально.
Ответить | Правка | Наверх | Cообщить модератору

21. "RE: обратный адрес пакета"  +/
Сообщение от mezantrop (?), 15-Авг-01, 13:43 
man 3 recv для (SCO UnixWare 7.1.1):

...socket is a socket file descriptor that has been created using socket. recv, recvfrom, and recvmsg are used to receive messages from another socket. recv may be used only on a connected
-------------------------^^^^
socket see connect(3sock)), while recvfrom and recvmsg may be used to receive data on a socket whether it is in a connected state or not. recvfrom is commonly used with connectionless sockets because it аllows the source address to be extracted from received data.

Вот так во всяком случае сказано в SCO. Никаких recv без connect. Установи соединение, и работай. Хочешь без соединения - работай через SOCK_DGRAM и recvfrom.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру