Здравствуйте! В образовательных целях хочу реализовать какой-то совсем базовый функционал TCP самостоятельно на Delphi, поскольку это единственный Standalone язык который я хорошо знаю. В ходе изучения вопроса выяснил, что в винде RAW-sockets с последних версий не могут быть использованы для создания TCP сессий и ряда других функций. Так что мой взгляд упал на программы для создания пакетов на низком уровне типа npcap. У npcap есть заголовочые файлы только для C++, я перенес пару функций на Delphi, типа перечисления интерфейсов, НО у npcap (который в свою очередь использует под капотом libcap) вся работа строится на одной большой сложной структуре pcap_t, в которой много ссылок на всякие разные другие функции, короче это долго и сложно переносить.
Вопрос: как можно реализовать то, что я хочу? Либо уже изучить плюсы будет быстрее, либо откатить винду (воткнуть виртуалку?) на 7, где raw sockets еще были нормальными? Или есть какие-то более удобные, быстрые решения этого вопроса?
RAW-sockets с последних версий не могут быть использованы для создания TCP сессий
Зачем TCP сессии? Вы же делаете грубо говоря MyTCP, а про MyTCP сессии ограничений нет :-)
Вы не сделаете замену "родному" TCP, т.к. для этого нужно его убрать из системы и добавить свой. Как минимум у TCP фиксированный идентификатор протокола в IP заголовке и там не может быть 2 вариантов обрвботчика TCP.
Поэтому вы делаете свой протокол с поддержкой соединений + представление данных в виде потока.
который в свою очередь использует под капотом libcap
libcap - это не про сокеты. Видимо имелось ввиду libpcap.
Зачем pcap и прочее?
Делайте свой TCP на базе UDP.
Подход будет практически таким же, как если бы вы делали на сыром IP сокете.
почему этот вариант мне не слишком по душе - у меня не самый мощный пк, винда + рантайм всякий + Embarcadero RAD Studio могут сильно подорвать его здоровье. Но, наверное, это будет действительно самый удобный вариант. Слышал краем глаза, что в линухе с этим попроще, но под линух никогда не разрабатывал