Задать вопрос
@66demon666
Сетевой админ, АТС-админ

Возможно ли реализовать TCP на Delphi?

Здравствуйте! В образовательных целях хочу реализовать какой-то совсем базовый функционал TCP самостоятельно на Delphi, поскольку это единственный Standalone язык который я хорошо знаю. В ходе изучения вопроса выяснил, что в винде RAW-sockets с последних версий не могут быть использованы для создания TCP сессий и ряда других функций. Так что мой взгляд упал на программы для создания пакетов на низком уровне типа npcap. У npcap есть заголовочые файлы только для C++, я перенес пару функций на Delphi, типа перечисления интерфейсов, НО у npcap (который в свою очередь использует под капотом libcap) вся работа строится на одной большой сложной структуре pcap_t, в которой много ссылок на всякие разные другие функции, короче это долго и сложно переносить.

Вопрос: как можно реализовать то, что я хочу? Либо уже изучить плюсы будет быстрее, либо откатить винду (воткнуть виртуалку?) на 7, где raw sockets еще были нормальными? Или есть какие-то более удобные, быстрые решения этого вопроса?
  • Вопрос задан
  • 759 просмотров
Подписаться 2 Средний 9 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Решения вопроса 2
@res2001
Developer, ex-admin
Написал ответ в комментариях тут.
Ответ написан
Комментировать
@mvv-rus
Настоящий админ AD и ненастоящий программист
В принципе, PCAP перенесли и в Windows (ключевое слово - WinPCAP), так что можно поэкспериментировать и в Windows.
В принципе, из Delphi можно вызывать функции API, написанные на C (С++ тут избыточен).
Вопрос только, как перенести описания функций в Delphi.
Почти наверняка это кто-то когда-то уже сделал, возможно - не единожды. Поищите по ключевым словам pcap и Delphi. Я, например, сразу наткнулся на ссылку https://github.com/den-kozlov/Snoop (но не спрашивайте меня, я туда даже не заглядывал).
PS Согласно старой (времен Win7/Win2K8R2) документации MS ограничения на работу raw socket с TCP были только на клиентских ОС, на серверные ОС они не распространялись (но надо было быть членом группы Админнистраторы). Может быть, это вам поможет.

А вообще, по жизни я согласен с предыдущим отвечающим Сергей Сахаров: не занимайтесь ерундой в образовательных целях.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Ставьте виртуалку в VirtualBox и не парьтесь с импортом сишных заголовков в дельфи.
Ответ написан
CityCat4
@CityCat4
Жил да был черный кот за углом...
как можно реализовать то, что я хочу?

Поставить линух и перестать пытаться сделать что-то неестественное в системе предназначенной для игрушки-кинушки-порнушки :)
Ответ написан
Afranius
@Afranius
Из говорящих дольше живут те, что говорят меньше.
В образовательных целях лучше не заниматься ерундой и не изобретать велосипеды.

В крайнем случае если уж так припёрло - скачать FreeDOS или Linux - и посмотреть исходники.

А лучшее понимание стека TCP/IP даёт настройка файрволла - к примеру, pf
Ответ написан
@EDIsaev
На Delphi можно написать всё! Даже сама среда Delphi написана на Delphi)
Но в данном случае разве что в чисто образовательных целях... т.к. нет иначе смысла изобретать колесо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Инком Нижний Новгород
от 160 000 до 230 000 ₽
Инком Нижний Новгород
от 160 000 до 230 000 ₽
ITK academy Краснодар
от 220 000 до 300 000 ₽