我有非常简单的TcpListener + TcpClient slient-server应用程序。我接受输入异步连接。然后我从网络流中读取数据。
我在新线程中运行此代码。但我必须为每个客户运行新线程......
while (true)
(MyCoreMessage)BinaryFormatter.Deserialize(TcpClient.GetStream())
是否有一些(简单而简单的)异步方式从网络流中去除对象的desearialize? 没有创建新线程...
感谢您的帮助
答案 0 :(得分:2)
我强烈建议您在数据前面加上长度前缀(例如,网络字节顺序为4个字节),并首先读取的长度。然后你知道在下一帧中预期有多少数据,所以缓冲区使用异步读取的大量数据(假设大小不是太大)。当您完成缓冲数据(异步),然后后,您可以使用像MemoryStream这样的东西并正常反序列化。
此: