Я использую для этого пакет компонентов Indy.На самом деле мне удается создать p2p-сеть через udp, и она все еще работает, но с помощью udp мне нужно каждый раз отправлять какой-либо пакет ping, в противном случае маршрутизатор удалит виртуальный порт из списка портов сопоставления!Для видео, звука или игрового проекта через udp это лучший способ, но для моего проекта он мне нужен через tcp.
Как я это сделал: у меня 1 серверный компьютер имел настоящий ip, все клиенты до перехода в режим p2pнеобходимо отправить пакет на сервер, и теперь сервер знает все виртуальные порты (out port) всех клиентов, помеченные на маршрутизаторе; если какой-либо клиент хочет отправить данные другому клиенту, ему просто нужно отправить данные другому ip и виртуальному порту клиентана роутере.Маршрутизатор может сопоставить его автоматически.
Я пытался таким же образом в tcp, клиент отправлял данные на другой ip и виртуальный порт клиента (на маршрутизаторе), но клиентский компонент tcp не может его получить!С помощью udp он может получить
Почему топология tcp p2p отличается от udp
Или как я могу отправить данные на сервер с помощью компонента idtcpserver для создания виртуального порта на маршрутизаторе