現在、アプリケーションで 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
どんな助けにも感謝します。