Я пытаюсь сделать p2p сеть через tcp - PullRequest
0 голосов
/ 13 декабря 2011

Я использую для этого пакет компонентов Indy.На самом деле мне удается создать p2p-сеть через udp, и она все еще работает, но с помощью udp мне нужно каждый раз отправлять какой-либо пакет ping, в противном случае маршрутизатор удалит виртуальный порт из списка портов сопоставления!Для видео, звука или игрового проекта через udp это лучший способ, но для моего проекта он мне нужен через tcp.

Как я это сделал: у меня 1 серверный компьютер имел настоящий ip, все клиенты до перехода в режим p2pнеобходимо отправить пакет на сервер, и теперь сервер знает все виртуальные порты (out port) всех клиентов, помеченные на маршрутизаторе; если какой-либо клиент хочет отправить данные другому клиенту, ему просто нужно отправить данные другому ip и виртуальному порту клиентана роутере.Маршрутизатор может сопоставить его автоматически.

Я пытался таким же образом в tcp, клиент отправлял данные на другой ip и виртуальный порт клиента (на маршрутизаторе), но клиентский компонент tcp не может его получить!С помощью udp он может получить

Почему топология tcp p2p отличается от udp

Или как я могу отправить данные на сервер с помощью компонента idtcpserver для создания виртуального порта на маршрутизаторе

1 Ответ

1 голос
/ 13 декабря 2011

Вы связываете sockets с TCP.UDP не связаны одинаково.
Разница между TCP и UDP

В пакете, который у вас есть (если вы укажете его имя, вы можете получить дополнительную помощь), там должно бытьбыть своего рода connection / socket / binding для клиента, который подключается к вашему серверу.Именно к этому соединению вам нужно отправлять данные.

...