и снова RAW SOCKETS
- From
- Gennady Porev (2:550/4.1)
- To
- Kirill Neznamov
- Date
- 2002-11-07T17:14Z
- Area
- SU.WINDOWS.NT.PROG
Hi, Kirill!
07 ноября 2002 15:34 Kirill Neznamov (2:5025/32.88) писал(а) к Kirill Neznamov про и снова RAW SOCKETS:
GP>> Addr.sin_family:=AF_INET;
GP>> Addr.sin_port:=0;
KN>> Порт то почему == 0? Ты на какой порт tcp пакет шлешь?
KN> Подумал я и засомневался насчет вот этого. Если мы открыли raw сокет на уровне
KN> IPPROTO_IP то весь ip пакет у нас датаграмма. Значит порт здесь не причем.
От имэнно :).
KN> Если короче то вот такой код у меня работает до сих пор на ура :
Мораль сей басни такова. Ошибка была в том, что Дельфя 6 и ниже в WinSock.PAS определяет библиотеку для импорта функций как WSOCK32.DLL, в то время как настоящие сокеты 2 живут в WS2_32.DLL. Простой заменой этой строки в Winsock.Pas я решил все свои мыслимые и немыслимые проблемы с сырыми сокетами, в том числе и совершенно не исправляя оригинальный запощенный мною ранее исходник.
Более того, оказалось что тут вообще по-барабану, что указывать в protocol для socket. Я могу сказать там IPPROTO_UDP и спокойно послать TCP-пакет. А могу даже и IPPROTO_IP, хотя в MSDNе это как бы и не разрешается делать (потому как = 0).
И ещё, туфта это всё про IP-заголовок... Винда всё равно не позволит менять Precedence и TOS вообще, к сожалению :(.
Вот так-то.
Relax -=- Gennady -=- icq: 13031700
--- GoldED/W32 3.0.1
* Origin: WatchCat-UA (2:550/4.1)