相关疑难解决方法(0)

我应该在 asyncio 中使用协议还是流?

我很asyncio陌生,想知道哪个 API 在更好的实践、协议或流方面比另一个更好?

对我来说,protocol(callback based API)似乎更容易工作,因为已经有connection_made,并data_received提供给您的方法。随着streams(coroutine based API)你必须自己管理连接和读取数据,但我觉得它利用的概念coroutine更多,这似乎是一个好东西给我。

这就是我收听传入数据的方式,对我来说感觉很尴尬。我也可以使用,readeexactly但有时它会提高IncompleteReadError.

message_body = b''
message_length = SOME_NUMBER
while True:
    while len(message_body) < message_length:
        try:
            message_body_chunk = await reader.read(message_length - len(message_body))
        except Exception as e:
            self.logger.error(e)
            return
            if not message_body_chunk:
                return
            message_body += message_body_chunk
Run Code Online (Sandbox Code Playgroud)

python coroutine python-3.x python-asyncio

5
推荐指数
1
解决办法
2592
查看次数

C中sendto函数允许的最大缓冲区长度是多少

我正在使用UDP套接字实现一个简单的网络堆栈,我希望从客户端向服务器发送大约1 MB的字符串数据.但是,我不知道sendto()C 中的UDP API中的长度是否有限制.如果存在限制并且sendto()不会处理超出限制的打包,那么我将不得不手动将字符串拆分为更小的块然后发送它们.

缓冲区的长度是否有限制?或者sendto()API是否自己处理打包.

任何见解都表示赞赏.

c sockets udp

3
推荐指数
1
解决办法
3601
查看次数

标签 统计

c ×1

coroutine ×1

python ×1

python-3.x ×1

python-asyncio ×1

sockets ×1

udp ×1