Поэтому у меня возникли некоторые проблемы при попытке подключения двух компьютеров с использованием адресов IPv6. У меня есть приложение, в котором два пользователя могут подключаться и отправлять пакеты друг другу, используя адреса IPv4 (один и тот же Wi-Fi). Однако из-за коронавируса нас заставили работать по всем штатам. Из-за этого я пытался перейти на использование IPv6. Теперь, согласно документации Ra kNet , это должно быть довольно просто. TLDR - вы устанавливаете семейство сокетов на использование IPv6 и изменяете Marco в заголовочном файле Ra kNet.
Источник. cpp
RakNet::SocketDescriptor sd(masterServerPort, "");
sd.socketFamily = AF_INET6;
RakNet::StartupResult result = peer->Startup(MAX_CLIENTS, &sd, 1);
peer->SetMaximumIncomingConnections(MAX_CLIENTS);
//std::cout << "The master server has started!\n ";
std::cout << "Result: " << result << "\n";
std::cout << "Server IP: " << peer->GetLocalIP(0) << "\n";
RakNetDefines.h
#ifndef RAKNET_SUPPORT_IPV6
#define RAKNET_SUPPORT_IPV6 1
#endif
Когда я запускаю эту программу, результат запуска выходит на SOCKET_FAMILY_NOT_SUPPORTED, и никто не может подключиться. Это происходит при запуске хост-машины, что означает, что у меня нет хоста для подключения. Кто-нибудь еще сталкивался с этой проблемой? Я использую Windows 10, который, по моему мнению, поддерживает IPv6 по умолчанию. Может ли это быть проблемой брандмауэра? На мой взгляд, этого не может быть, поскольку я один запускаю сервер, но это не в моей компетенции. Я как бы врезался в кирпичную стену, поэтому любая помощь была бы отличной.
Другое решение, которое у меня есть, - использование сквозного доступа через NAT, но для этого потребуется внешний сервер, который стоит денег (при очень низком бюджете). Я бы хотел как можно больше избегать использования внешних сервисов.
Заранее спасибо!
Редактировать: я делаю это приложение на C ++, но использую API Ra kNet, чтобы помочь с пакеты. Я считаю, что это проблема Ra kNet в моем коде, но я открыт для предложений.
Редактировать: Я даже не могу правильно запустить хост, поэтому пакеты между компьютерами пока не отправляются.