更改传输的接收和发送方法

2024-04-28 16:00:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pysctp套接字实现基于SCTP和异步IO的客户端。理想情况下,我想做如下工作:

async def sctp_client():
    sock = sctp.sctpsocket_udp(socket.AF_INET)
    reader, writer = await asyncio.open_connection(sock=sock)
    writer.write(b'some data', ppid=5)
    await writer.drain()
    data = await reader.read(100)
    print(f'Received: {data.decode()}')
    writer.close()
    await writer.wait_closed()

实际上,有两个问题:

  • 有没有办法将“运输工厂”传递到open_connectionloop.create_connection 我希望流包含的传输对象使用sctp_recv而不是recv,使用sctp_send而不是send。显然,最简单的方法是从最初的transport类派生,但我找不到一个好的python方法
  • 有没有办法从open_connection获取自定义的StreamWriter显然,我可以从原始文件创建自己的open_connection,向原始文件添加一个方法,或者只访问内部传输,但这些选项非常难看。我能想到的第二个最好的方法就是使用loop.create_connection实现我自己的open_connection

非常感谢


Tags: 方法loopsenddatacreateopenawaitconnection
1条回答
网友
1楼 · 发布于 2024-04-28 16:00:58

看看source code,没有办法为asyncio.open_connection提供工厂。也就是说,那里的代码并不十分复杂。请注意文档字符串的最后一行:

(If you want to customize the StreamReader and/or StreamReaderProtocol classes, just copy the code there's really nothing special here except some convenience.)

这正是我建议你做的

相关问题 更多 >