| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Hook на сокет |
| Автор: <Spawn> 26.3.2003, 01:51 |
| Существует ли такая возможность?? Если да, то подскажите, пожалуйста, как её реализовать или где начать искать. |
| Автор: <Spawn> 26.3.2003, 03:06 |
| Или может существуют какие-нибудь функции для чтения\посылки данных на уже забинденный сокет?Покрайней мере такого в idWinSock2 я не нашел. Даже для функций RecvFrom и SendTo необходимо осуществлять bind, что приводит к ошибке, так как сокет уже используется(( |
| Автор: Dayana 26.3.2003, 19:30 |
| <Spawn>, насколько я поняла, тебе надо что-то, что работает как сниффер? Если да то http://forum.vingrad.ru/index.php?act=ST&f=2&t=6256&hl=Сокет можешь посмотреть обсуждения похожего вопроса с примерами... |
| Автор: Step 26.3.2003, 19:42 |
| Dayana это ЮДП врядли для TCP так можно |
| Автор: man2002ua 26.3.2003, 19:53 | ||
Можно, если выставить опцию сокета - SO_REUSEADDR, тогда можно подключаться к уже используемому адресу:порту. Правда возникает опасность - что приложение использующее этот адрес первым может потерять соединение и попытаться восстановить его. А без REUSEADDR у него это не получится - занят вашим сниффером. |
| Автор: Step 26.3.2003, 20:03 | ||
|
| Автор: man2002ua 26.3.2003, 20:13 |
| Step, смотри faq © Step шутка см. в любом хелпе ф-ю " setsockopt " - и один из флагов SO_REUSEADDR. там еще много полезного, сам использовал. |
| Автор: <Spawn> 26.3.2003, 20:25 | ||
Ну это понятно), но дело в том, что эту опцию должно устанавливать приложение создающее сокет, а в моем случае я не управляю созданием этого сокета. |
| Автор: man2002ua 26.3.2003, 20:29 |
| Нет. Приложение А создало и открыло и про_Bind_ило сокет. Твое приложение В - инициализирует сокет, и перед тем как при_Bind_ить его к уже используемому адресу:порту - вызывает setsockopt с флагом REUSE, к-й говорит, что можно подключиться к используемому сокету. |
| Автор: <Spawn> 26.3.2003, 20:35 | ||
Хм) Значит ето я ошибку где то сделал, когда пытался вызвать эту функцию. Надо буде попробовать. |