2024-10-02 22:35:28 发布
网友
我正在尝试在NAT后面的两台计算机之间建立连接。我有第三台电脑,这两个人可以使用。在
我想使用ICE(交互式连接建立)协议,但在Python中找不到任何示例。我听说过pjsip,它包括一个名为pjnath的C库,但它也是用C编写的
pjsip
pjnath
有没有什么工具可以用Python编写它?如果没有,有没有其他方法可以做我所描述的?如果没有,如何在Python中启动ICE协议?在
您可以使用以下仅Python库来建立ICE连接:
https://github.com/jlaine/aioice
以下是同一流程中两个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())
PjSIP有一个python模块,您可以使用它。在
您可以找到详细信息并链接到所需教程here。在
您可以使用以下仅Python库来建立ICE连接:
https://github.com/jlaine/aioice
以下是同一流程中两个ICE端点的示例。在现实生活中,你需要一些信令方法来交换候选者,用户名(“ufrag”)和密码(“pwd”)。在
PjSIP有一个python模块,您可以使用它。在
您可以找到详细信息并链接到所需教程here。在
相关问题 更多 >
编程相关推荐