Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 26.04.2012, 14:50   #1
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: WWW ЛЕНИНГРАД СПб точка РУ
Сообщений: 843
Репутация: 435
По умолчанию Работа 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование видеоадаптера на низком уровне drlike Assembler 31 15.02.2015 15:56
работа с wav на низком уровне vsrmis Мультимедиа в Delphi 10 15.01.2011 02:13
МАЛЕНЬКАЯ ПРОБЛЕМКА С ГРАФИКОЙ НА НИЗКОМ УРОВНЕ Костик++ Assembler 6 17.11.2010 22:00
Работа с файлами на низком уровне JamS007 Общие вопросы C/C++ 15 26.05.2009 21:17
Работа на низком уровне Prowler Работа с сетью в Delphi 2 26.12.2006 07:29


03:30.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru