Главная страница
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.014 c
1-31301
Sergei Nevazhnyi
2003-06-25 18:03
2003.07.10
Работа с canvas в D7


7-31551
Neznaika
2003-04-27 14:16
2003.07.10
Поблема с ctrl_alt_del в xp


14-31409
yu-roman
2003-06-22 02:40
2003.07.10
Как уменьшить вес .exe файла


3-31106
victor_ch
2003-06-13 10:17
2003.07.10
Подключение к MSsql серверу


4-31578
Xeon
2003-05-09 07:45
2003.07.10
Как создать ярлык?