Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 14:50   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию Работа Socket на низком уровне RAW пакеты

Доброго всем времени!!! Хочу перевести сокет на низкий уровень для формированя своего IP заголовка и TCP. Проблема такая никак неполучается перевести его для формирования IP заголовка с TCP вроде проблем нету, отправка идет двойного IP заголовка, если проходит. Кто работал с формированим RAW пакетов прошу откликнуться. Заранее спасибо!!!.
В интернете находил примеры но во всех пишут что для Win2000.

Часть кода по переводу сокета в RAW
заголовки TIPHeader и TTCPHeader заполненяютя автоматом от запросившего ресурс клиента

Код:
   const
    IP_HDRINCL = 2; // включаем заголовок IP пакета

    FSocket := WinSock.socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
        if (FSocket = INVALID_SOCKET) then
         begin
         FLastError := WSAGetLastError;
         Synchronize(OnError);
        Exit;
        end;

    // пробуем включить изменения IP заголока 
    if setsockopt(FSocket, IPPROTO_IP, IP_HDRINCL, 'TRUE', SizeOf(bool)) <>  SOCKET_ERROR then
     begin

    Size := WinSock.send(FSocket, Buffer, Size, 0);

   {либо так
     sin.sin_family := AF_INET;
    sin.sin_addr.S_addr := IPHeader^.destIP
    Size := WinSock.sendto(FSocket, Buffer, Size, 0, sin, SizeOf(sin));
    но тоже непомогло ошибка ниже происходит}
        
       if (Size = SOCKET_ERROR) then
        begin
          FLastError := WSAGetLastError;
          Synchronize(OnError);  // Ошибка присходит здесь то есть пакет неотправлен
          Exit;
          end;
//Либо двойной IP заголовок нет доступа к формированию
end;
Мне нужно получить доступ к изменению IP заголовка и отправка его.
Никаких корыстных целей нет, просто делаю програмку типа шлюза. Принцип такой сокет слушает все порты типа снифера затем от запросившего ресурс клиента в локалке получает пакет и перекидывает его в интернет и обратно.

И еще один вопрос возник можно ли с сетевым устройством работать через CreateFile, WriteFile, ReadFile, по принципу работы с Com портом и других устройств.

Последний раз редактировалось Aliens_wolfs; 26.04.2012 в 16:31.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование видеоадаптера на низком уровне drlike Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 15.02.2015 14:56
работа с wav на низком уровне vsrmis Мультимедиа в Delphi 10 15.01.2011 01:13
МАЛЕНЬКАЯ ПРОБЛЕМКА С ГРАФИКОЙ НА НИЗКОМ УРОВНЕ Костик++ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 17.11.2010 21:00
Работа с файлами на низком уровне JamS007 Общие вопросы C/C++ 15 26.05.2009 21:17
Работа на низком уровне Prowler Работа с сетью в Delphi 2 26.12.2006 06:29