【问题标题】:asyncio - open connection using specific interfaceasyncio - 使用特定接口打开连接
【发布时间】:2020-08-28 13:57:18
【问题描述】:

我正在尝试跨一些代码移动以使用 asyncio(出于各种原因)。在我现有的代码中,我创建了一个套接字,我将其bind() 连接到特定接口,以确保在该接口上建立 TCP 连接:

_TCP_Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
_TCP_Socket.bind(('169.254.6.1', 13000)) # All data sent from this IP, Port (i.e using the interface that has this IP)
_TCP_Socket.connect(('169.254.10.123, 13000))

上述方法有效,但我如何在 asyncio 中实现相同的效果?即如何选择要发送的接口? asyncio.open_connection() 没有 bind() 这样的。

那么,我要给它一个套接字吗?即像以前一样创建一个绑定到我要发送的接口的套接字,然后调用open_connection?

reader, writer = await asyncio.open_connection('169.254.10.123', 13000, sock=_TCP_Socket) # Use _TCP_Socket created earlier?

【问题讨论】:

    标签: python sockets python-asyncio


    【解决方案1】:

    文档says 表明asyncio.open_connection 具有命名参数local_addr,其描述可以在create_connection 描述中找到:

    如果给定,是一个 (local_host, local_port) 元组,用于将套接字绑定到本地。

    因为open_connectioncreate_connection 的包装,并且文档包含以下句子:

    其余参数直接传递给loop.create_connection()。

    【讨论】:

    • 我在文档中看不到它描述 local_addr - 你在哪里找到的信息?
    • 更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2020-08-16
    • 1970-01-01
    相关资源
    最近更新 更多