所以我在尝试让两台计算机使用 IPv6 地址连接时遇到了一些问题。我有一个应用程序,两个用户可以使用 IPv4 地址(相同的 wifi)相互连接和发送数据包。但是,由于冠状病毒,我们被迫在各州工作。因此,我一直在尝试切换到使用 IPv6。现在根据 RakNet文档,这应该相当简单。TLDR 是您将套接字系列设置为使用 IPv6 并更改 RakNet 头文件中的 Marco。
源.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 并且没有人可以连接。启动主机时会发生这种情况,这意味着我似乎没有要连接的主机。有没有其他人遇到过这个问题?我正在使用我认为默认支持 IPv6 的 Windows 10。这可能是防火墙问题吗?在我看来,这不可能,因为我是启动服务器的人,但这超出了我的专业知识。我有点撞到了一堵砖墙,所以任何帮助都会很棒。
我拥有的另一个解决方案是使用 NAT 穿透,但这需要一个外部服务器,这需要花钱(预算非常低)。我想尽可能避免使用外部服务。
提前致谢!
- 空隙
编辑:我正在用 C++ 制作这个应用程序,但使用 API RakNet 来帮助处理数据包。我相信这是我的代码中的一个 RakNet 问题,但我愿意接受建议。
编辑:我什至无法正确启动主机,因此尚未发送计算机之间的数据包。