Windows对等连接

时间:2013-03-26 05:39:01

标签: winapi p2p

我现在正尝试在我的应用程序中使用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

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

0 个答案:

没有答案