Вопрос чайника
Есть сервер(мой) с общедоступным адресом ( типа
https://myserver.ru ). Есть клиентские программы на С++. Нужно иметь возможность передать файл по сети из одного клиента на другой напрямую, не гоняя всю инфу через соединение с сервером. Клиентские машины могут быть за NAT, в каких-то корпоративных сетях, для которых другой клиент будет вне этой сети. Качать файл через соединение с центральным сервером должно быть крайним случаем.
Как организовать прямой коннект между клиентами? Есть ли что-то готовое и работающее на С++? Платформы мак-вин-линух. По идее еще будет андроид.
Здравствуйте, mangaman, Вы писали:
M>Вопрос чайника
M>Есть сервер(мой) с общедоступным адресом ( типа https://myserver.ru ). Есть клиентские программы на С++. Нужно иметь возможность передать файл по сети из одного клиента на другой напрямую, не гоняя всю инфу через соединение с сервером. Клиентские машины могут быть за NAT, в каких-то корпоративных сетях, для которых другой клиент будет вне этой сети. Качать файл через соединение с центральным сервером должно быть крайним случаем.
M>Как организовать прямой коннект между клиентами? Есть ли что-то готовое и работающее на С++? Платформы мак-вин-линух. По идее еще будет андроид.
Берем любою либу для торрента, и ...
Не оно?
Здравствуйте, mangaman, Вы писали:
M>Как организовать прямой коннект между клиентами? Есть ли что-то готовое и работающее на С++? Платформы мак-вин-линух. По идее еще будет андроид.
Попробуйте модифицировать syncthing
https://github.com/syncthing/syncthing
Написано оно (к счастью) не на C++, но вы вполне сможете запускать отдельный процесс и общаться с ним через stdin/stdout
Используй raknet
Оно умеет надежную доставку через UDP и nat punch through при помощи своего сервера вне ната — как раз его и захостишь.
http://www.raknet.net/raknet/manual/natpunchthrough.html