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

Вниз

Создаю ip пакет вручную, проблема с setsockopt   Найти похожие ветки 

 
EvgenTss   (2003-05-04 14:14) [0]

Следующий код для отсылки своего пакета

if WSAStartUp(257, WSAData) <> 0 then exit;
opt:= Pchar(1);
s := socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
if s = INVALID_SOCKET then exit;
opt:= Pchar(1);
if setsockopt(s, IPPROTO_IP, ip_dontfragment , opt, sizeof
(opt)) = SOCKET_ERROR then exit;


addr.sin_family := AF_INET;
addr.sin_port := htons(0);
addr.sin_addr.S_addr:= inet_addr(PChar(ip_dst));

if sendto(s, buf , sizeof(buf), 0, addr , sizeof(addr)) = SOCKET_ERROR then exit;
CloseSocket(s);

setsockopt возвращает SOCKET_ERROR, второй день бьюсь.


 
Zelius ©   (2003-05-04 16:16) [1]

Что такое ip_dontfragment ? В MSDN о нем ничего нету... И потом, посмотри, что за ошибка возвращается и ее описание для SetSockOpt


 
EvgenTss   (2003-05-04 17:38) [2]

IP_DONTFRAGMENT - ставит флаг в заголовке ip запрешающий роутерам фрагментировать пакет(winsock.pas), но это не суть, можно менять ip_ttl или ip_tos но функция всё равно возвращает ошибку socket_error. как можно получть номер ошибки?


 
Serg!   (2003-05-04 18:43) [3]

EvgenTss (04.05.03 17:38)
"как можно получть номер ошибки?"

Номер - можнт быть "GetLastError" поможет?


 
EvgenTss   (2003-05-04 22:27) [4]

Друзья мой, неужели никто не занимался низкоуровневым программированием сокетов? Как-то не верится. Или мой вопрос слишком тривиален?


 
nikkie ©   (2003-05-04 22:37) [5]

If no error occurs, setsockopt returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.


 
EvgenTss   (2003-05-04 23:27) [6]

WSAGetLastError нолик возвращает, такие дела...


 
nikkie ©   (2003-05-05 00:34) [7]

неправильно 4-5 параметры заполняешь. нужно передавать указатель на integer + sizeof(integer). пример из indy:
Binding.SetSockOpt(Id_IPPROTO_TCP, Id_TCP_NODELAY, PChar(@Id_SO_True), SizeOf(Id_SO_True));


 
EvgenTss   (2003-05-05 11:22) [8]

спасибо, всё ок.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
3-31115
rosl
2003-06-16 06:17
2003.07.10
присвоить значение для всех записей


1-31177
Новенький
2003-06-27 20:51
2003.07.10
Edit и ListBox


8-31368
Катерина
2003-03-21 11:50
2003.07.10
Гистограмма


14-31514
picaroon
2003-06-25 10:01
2003.07.10
Помогите кто чем может с кодом


6-31391
Kremen
2003-05-03 12:59
2003.07.10
Ошибка при использовании снифера