и снова 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)