我现在正尝试在我的应用程序中使用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
如果有任何帮助,我将不胜感激。