и снова RAW SOCKETS

From
Gennady Porev (2:550/4.1)
To
Kirill Neznamov
Date
2002-11-07T16:40Z
Area
SU.WINDOWS.NT.PROG
Hi, Kirill!

07 ноября 2002 14:32 Kirill Neznamov (2:5025/32.88) писал(а) к  Gennady Porev про и снова RAW SOCKETS:

 GP>> Я всё сделал так как там, но опять-таки не ясен вопрос с IP_HDRINCL.
 KN> Ты на какой системе делаешь? IP_HDRINCL проходит только на 2000/XP.

Правда??? Ты мне просто глаза открыл на истину! А заметить в конце моего письма "PS: Win2K" не позволили, очевидно, соображения религиозного характера.

 GP>> i : byte;
 GP>> begin
 GP>> i:=1;
 GP>> SetSockOpt(S,IPPROTO_IP,IP_HDRINCL,@i,SizeOf(i));

 KN>  А вот и ошибка.                          ^^^^^^^^^
 KN>  sizeof(i) у тебя будет = 1 так как i у тебя байт.
 KN>  в msdn сказано что IP_HDRINCL это BOOL.Поэтому:
 KN>  SetSockOpt(S,IPPROTO_IP,IP_HDRINCL,@i,4);

Да что ты говоришь???? 8-))))) Тогда обьясни, мне, пожалуйста вот что. Во-первых, чем отличается байт и интежер при положении этого параметра на стэк для вызова SetSockOpt, а во-вторых, почему тогда функция SetSockOpt не возвращает здесь значение <>0, если это ошибка?

 GP>> Addr.sin_family:=AF_INET;
 GP>> Addr.sin_port:=0;

 KN>  Порт то почему == 0? Ты на какой порт tcp пакет шлешь?

А ему не один фиг? Ведь я даю TCP-заголовок.

 KN>  Чую тебе надо разобраться с семейством протоколов tcp/ip.

Уж разобрался так разобрался :). Практически, причём. С помощью снифферов и нетмонитора, которые показали, что противопоказаний у этого пакета уйти с интерфейса никаких нет. И ошибка была совершенно даже не здесь.

 GP>> PS: Win2k, ессно.
 KN> Пока ты сам не научишься проверять коды ошибок у виндовых api функций
 KN> тебе будет сложно писать проги.

Знаешь шо, дядя... Если бы я постил сюда настоящие листинги своих прог, где ошибки проверяются буквально от каждой функции, это было бы некрасиво и нечитабельно... Конечно же, ни одна из функций, кроме той, о которой говорилось в предисловии ошибок не возвращала, иначе какого бы хрена я тут спрашивал?

 Relax -=- Gennady -=- icq: 13031700

--- GoldED/W32 3.0.1
 * Origin: WatchCat-UA (2:550/4.1)