Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

recv не верно возвращает колличество принятых байт.   Найти похожие ветки 

 
Rezya ©   (2004-03-30 19:03) [0]

Сразу приведу код.

const
MAX_PACKET_SIZE=1024;
var
buffer: array [0..MAX_PACKET_SIZE-1] of byte;
res:integer;
......
......
......
res:=recv(Sock, Buffer, SizeOf(Buffer), 0);

проблема в том что recv то правельно возвращает колличество принятых байт (т.е. if res >= SizeOf(IPHeader) then где IPHeader структура ip-заголовка)то возвращает 1. В чем проблема?


 
Verg ©   (2004-03-30 21:51) [1]

Почему ты решил, что максимальный размер принимаемой датаграммы равен именно 1024 ?
Кто такой Sock? Ты, вообще, учиться чем-нибудь собираешься? Хотя бы задавать вопросы...


 
Rezya ©   (2004-03-30 23:53) [2]

Для не сообразительных
Var
Sock:TSocket;
........
Sock:=Socket(Af_Inet,SOCK_RAW,IPPROTO_IP);


 
Rouse_ ©   (2004-03-31 01:17) [3]

Во первых: Приведенного кода недостаточно для определения ошибки...
Во вторых, как верно указал Андрей, 1024 было взято тобой похоже с потолка...
В третьих - не мешает сделать WSAGetLastError после получения результатом единицы...


 
Verg ©   (2004-03-31 08:32) [4]


> Rouse_ ©   (31.03.04 01:17) [3]


Почти уверен, что не 1-цы, а минус 1-цы, т.е. SOCKET_ERROR


 
Rezya ©   (2004-03-31 09:11) [5]

Да нет как раз 1.


 
Verg ©   (2004-03-31 09:41) [6]


> Rezya ©   (31.03.04 09:11) [5]
> Да нет как раз 1.


Да нет, чудеса ты рассказываешь. Такого не бывает.

Говорят тебе 1024 - это мало для IP датаграммы, и когда этого не хватает  у тебя recv и возвращает SOCKET_ERROR (-1) с WSAGetLastError = WSAEMSGSIZE.

Либо глючные у тебя винды какие-то. Переустанови, сервиспаки там всякие.

Либо.... либо все же, как говорится, "протри глаза".


 
Rouse_ ©   (2004-03-31 10:18) [7]

Ну хорошо - давай будем плясать от противного, пусть возвращяет единицу - тогда что содержится в буфере после этого?


 
Rezya ©   (2004-03-31 16:42) [8]

Ладно закрыли тему. Все у меня зарабатало(наверно глюк в виндах).
Теперь вернусь к старой теме. Как делается перехват иходящего трафика. И фишка с SIO_RCVALL =$98000001; т.е. с тем что она переводит сокет в режим полного перехвата у меня и на сетевухе тоже не пошла.
P.S. Народ ну помогите с перехватом исходящего трафика. Начальник не "слезает". Он как делается через прокс или другими способами???


 
Verg ©   (2004-03-31 17:11) [9]

Короче, послать тебя на WinPCap тебя мне, лично, религия позволяет.

Как тебе?


 
Rezya ©   (2004-04-01 02:15) [10]

Если такой умный то приведы код, хотябы самый простой, с использованием библиотеки WinPCap.
Зарание благодарен



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.071 c
1-1083923137
Erik
2004-05-07 13:45
2004.05.23
Динамическое определение типа?


3-1083055177
Term
2004-04-27 12:39
2004.05.23
MIDAS..... помогите разобраться что я намудрил


8-1078393469
Lub
2004-03-04 12:44
2004.05.23
OpenGL


1-1083742334
AntonSh
2004-05-05 11:32
2004.05.23
Класс TList


3-1082742571
HPR
2004-04-23 21:49
2004.05.23
Реструктуризация таблицы