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

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

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

Вопрос: как можно реализовать то, что я хочу? Либо уже изучить плюсы будет быстрее, либо откатить винду (воткнуть виртуалку?) на 7, где raw sockets еще были нормальными? Или есть какие-то более удобные, быстрые решения этого вопроса?
  • Вопрос задан
  • 368 просмотров
Подписаться 2 Средний 9 комментариев
Решения вопроса 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
//COPY01 EXEC PGM=IEBGENER
как можно реализовать то, что я хочу?

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

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

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

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

Похожие вопросы