Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.02 c
7-1082036240
VasRog
2004-04-15 17:37
2004.05.23
API: ScrollDC


1-1083748602
Романов Р.В.
2004-05-05 13:16
2004.05.23
Организация вывода сообщения об ошибке


1-1084196302
Reals
2004-05-10 17:38
2004.05.23
Поиск компонента наподобии StringGrid или ListView, но...


1-1084047903
nkoleda
2004-05-09 00:25
2004.05.23
Excel и примечание


14-1083436636
RealRascal
2004-05-01 22:37
2004.05.23
win xp и принтер




   Наверх