首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ICE协议

如何使用ICE协议
EN

Stack Overflow用户
提问于 2014-10-10 19:12:46
回答 2查看 1.2K关注 0票数 0

我正在尝试在NAT后面的两台计算机之间建立连接。我还有第三台计算机可以被这两个人访问。

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

有没有什么工具可以用Python来实现呢?如果没有,有没有其他方法可以做到我所描述的?如果没有,如何在Python中启动ICE协议?

EN

回答 2

Stack Overflow用户

发布于 2014-10-26 15:50:04

PjSIP有一个可以使用的python模块。

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

票数 0
EN

Stack Overflow用户

发布于 2018-02-24 01:09:47

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

https://github.com/jlaine/aioice

下面是同一进程中的两个ICE端点的示例。在现实生活中,你需要一些信号方法来在两者之间交换候选者的用户名("ufrag")和密码("pwd")。

代码语言:javascript
复制
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())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26298099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档