![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создаю ip пакет вручную, проблема с setsockopt [D7, WinXP]
EvgenTss © (2003-05-04 14:14:00)Следующий код для отсылки своего пакета
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, второй день бьюсь.
EvgenTss (2003-05-05 11:22:00) [1]спасибо, всё ок.
nikkie (2003-05-05 00:34:00) [2]неправильно 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-04 23:27:00) [3]WSAGetLastError нолик возвращает, такие дела...
nikkie (2003-05-04 22:37:00) [4]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 22:27:00) [5]Друзья мой, неужели никто не занимался низкоуровневым программированием сокетов? Как-то не верится. Или мой вопрос слишком тривиален?
Serg! (2003-05-04 18:43:00) [6]EvgenTss (04.05.03 17:38)
"как можно получть номер ошибки?"
Номер - можнт быть "GetLastError" поможет?
EvgenTss (2003-05-04 17:38:00) [7]IP_DONTFRAGMENT - ставит флаг в заголовке ip запрешающий роутерам фрагментировать пакет(winsock.pas), но это не суть, можно менять ip_ttl или ip_tos но функция всё равно возвращает ошибку socket_error. как можно получть номер ошибки?
Zelius (2003-05-04 16:16:00) [8]Что такое ip_dontfragment ? В MSDN о нем ничего нету... И потом, посмотри, что за ошибка возвращается и ее описание для SetSockOpt