使用带套接字的流的异步方法

时间:2010-07-09 11:34:02

标签: c# .net sockets asynchronous protobuf-net

我总是构建自己的序列化器/反序列化器,以便能够将BeginReceive / EndReceive与套接字一起使用,以避免每个连接的套接字使用一个线程。这是一项非常耗时的任务。

我已经开始关注protobuf-net并希望将其与异步套接字一起使用,而无需自己编写序列化/反序列化。如果我不必每个套接字使用一个线程来封装阻塞操作,我宁愿这样做。

查看quickstart他们就是这样做的(每个客户一个线程)。没有别的办法吗?

我的问题不是关于protobuf-net,而是关于序列化和套接字。但是protobuf-net的例子非常受欢迎。

1 个答案:

答案 0 :(得分:1)

这只是一个基本的例子。 protobuf-net是序列化层,而不是消息传递层。如果您有特定的方式来处理消息传递:去吧。您需要做的就是,在流处理期间,缓冲整个消息(可能是MemoryStream),然后在数据可用时通过protobuf-net处理它。

不同之处在于,您可能希望直接处理有效负载长度,而不是直接使用*WithLengthPrefix方法,以便您的代码知道在处理之前要缓冲多少数据。