don*_*llo 5 sockets serialization haskell
我看到有很多方法可以序列化/反序列化Haskell对象:
在我的应用程序中,我想设置一个简单的TCP客户端服务器,客户端可以在其中发送序列化的Haskell记录对象。如何确定这些序列化方法之间的差异?
此外,当使用Network.Socket通过网络发送序列化为字符串的对象时,将返回字符串。是否有一个稍高一点的库,可以在整个TCP消息级别使用?换句话说,有一种方法可以避免在接收端编写解析代码:
在我的应用程序中,预计对象不会太大(最大约1MB)。
至于你问题的第二部分,需要两件事:
增量解析器不需要将整个文档存储在内存中即可开始解析,并且可以输入从线路到达的部分数据块。此外,当解析成功时,它必须返回任何“剩余数据”以及解析的值。
具有“推回功能”的数据源,允许您“取消读取”任何剩余内容,以便它们可用于下一次解析尝试。
提供 (1) 的最受欢迎的库是attoparsec。至于(2),所有三个主要流库(conduit、io-streams和pipes)都提供某种推回功能(后者使用辅助pipes-parse包)。所有三个库都可以与 attoparsec 解析器集成(请参阅此处、此处和此处)。
(当然,另一种选择是在每条消息前面加上其长度,仅读取确切的字节数。)
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |