Python 如何使用ICE协议

Python 如何使用ICE协议,python,ice-protocol,Python,Ice Protocol,我正试图在NAT后面的两台计算机之间建立连接。我有第三台电脑,这两台电脑都可以使用 我想使用ICE交互式连接建立协议,但在Python中找不到任何示例。我听说过pjsip,其中包括一个名为pjnath的C库,但它也是用C编写的 有没有用Python制作的工具?如果没有,有没有其他方法来实现我所描述的?如果没有,如何在Python中启动ICE协议?PjSIP有一个Python模块,您可以使用它 您可以找到详细信息并链接到所需教程。您可以使用以下纯Python库建立ICE连接: 以下是同一过程中两个

我正试图在NAT后面的两台计算机之间建立连接。我有第三台电脑,这两台电脑都可以使用

我想使用ICE交互式连接建立协议,但在Python中找不到任何示例。我听说过pjsip,其中包括一个名为pjnath的C库,但它也是用C编写的


有没有用Python制作的工具?如果没有,有没有其他方法来实现我所描述的?如果没有,如何在Python中启动ICE协议?

PjSIP有一个Python模块,您可以使用它


您可以找到详细信息并链接到所需教程。

您可以使用以下纯Python库建立ICE连接:

以下是同一过程中两个ICE端点的示例。在现实生活中,您需要一些信令方法来交换候选项、用户名ufrag和密码pwd

import asyncio

import aioice


async def connect_using_ice():
    conn_a = aioice.Connection(ice_controlling=True)
    conn_b = aioice.Connection(ice_controlling=False)

    # invite
    await conn_a.gather_candidates()
    conn_b.remote_candidates = conn_a.local_candidates
    conn_b.remote_username = conn_a.local_username
    conn_b.remote_password = conn_a.local_password

    # accept
    await conn_b.gather_candidates()
    conn_a.remote_candidates = conn_b.local_candidates
    conn_a.remote_username = conn_b.local_username
    conn_a.remote_password = conn_b.local_password

    # connect
    await asyncio.gather(conn_a.connect(), conn_b.connect())

    # send data a -> b
    await conn_a.send(b'howdee')
    data = await conn_b.recv()
    print('B got', data)

    # send data b -> a
    await conn_b.send(b'gotcha')
    data = await conn_a.recv()
    print('A got', data)

    # close
    await asyncio.gather(conn_a.close(), conn_b.close())


asyncio.get_event_loop().run_until_complete(connect_using_ice())