2

我现在正尝试在我的应用程序中使用 Windows P2P 本机函数通过 Internet 连接它的实例。为了测试,我设置了一个应用程序,它使用 PeerGraphCreate 来建立 P2P 图,然后使用 PeerPnrpRegister 注册一些对等名称。他们使用 PeerGraphRegisterEvent 注册消息并在应用程序侦听线程中的事件时进入循环。这一面似乎工作得很好。

在第二个应用程序中,我使用成功的 PeerGraphOpen 打开图形。然后,我使用 PeerPnrpResolve 从第一个应用程序解析对等名称。它返回两个 ipv6 地址。但是,当我将其中任何一个提供给 PeerGraphConnect 函数时,它会返回一个 HRESULT 读取“请求的地址在其上下文中无效。我不知道出了什么问题,有人会很乐意提供线索吗?

这是第二个应用程序的代码供参考:

HGRAPH hGraph;
HRESULT hr = PeerGraphOpen( L"TestP2PGraph", L"DebugPeer", L"TestPeerDB", NULL, 0, NULL, &hGraph );
if( hr == S_OK || hr == PEER_S_GRAPH_DATA_CREATED )
{
    // Connect to PNRP
    if( SUCCEEDED( PeerPnrpStartup( PNRP_VERSION ) ) )
    {
        ULONG numEndpoints = 1;
        PEER_PNRP_ENDPOINT_INFO* endpointInfo;
        hr = PeerPnrpResolve( L"0.TestBackgroundPeer", L"Global_", &numEndpoints, &endpointInfo );
        if( SUCCEEDED( hr ) )
        {

            PEER_ADDRESS addr;
            addr.dwSize = sizeof( PEER_ADDRESS );
            addr.sin6 = *((SOCKADDR_IN6*)endpointInfo->ppAddresses[1]);
            ULONGLONG connection;
            hr = PeerGraphConnect( hGraph, NULL, &addr, &connection );
            ^^ this reads "Requested address is not valid in its context

如果有任何帮助,我将不胜感激。

4

0 回答 0