2

現在、アプリケーションで Windows P2P ネイティブ関数を使用して、そのインスタンスをインターネット経由で接続しようとしています。テストのために、PeerGraphCreate を使用して P2P グラフを確立し、PeerPnrpRegister を使用してピア名を登録する 1 つのアプリケーションをセットアップしました。PeerGraphRegisterEvent を使用してメッセージを登録し、アプリケーションがスレッド内のイベントをリッスンしている間にループに入ります。この辺はうまくいくようです。

2 番目のアプリケーションでは、成功した PeerGraphOpen を使用してグラフを開きます。次に、PeerPnrpResolve を使用して、最初のアプリからピア名を解決します。2 つの ipv6 アドレスを返します。ただし、それらのいずれかを PeerGraphConnect 関数にフィードすると、HRESULT の読み取りが返されます。

参照用の 2 番目のアプリケーションのコードは次のとおりです。

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