命名管道传递对象,流结束问题

时间:2013-07-18 12:03:09

标签: c# wcf streaming named-pipes

我试图通过C#中的命名管道传递一个类对象。但是我得到一个错误“解析完成之前遇到的流结束”。 这真是令人沮丧,因为我设法发送字符串没有问题。有谁能看出问题是什么?

客户端发送数据:

using(NamedPipeClientStream cs = 
    new NamedPipeClientStream("MyServer", "MyPipeName", PipeDirection.Out, PipeOptions.Asynchronous))
{
    ObservableCollection<MyObject> messageToSend = new ObservableCollection<MyObject>(new MyObject() { MyProp1 = "Hello", MyProp2 = 7 });
    IFormatter f = new BinaryFormatter();
    foreach (var item in messageToSend)
    {
        f.Serialize(pipeStream, item);
    }
}

服务器端接收数据:

NamedPipeServerStream ss = new NamedPipeServerStream("MyPipeName", PipeDirection.In);
ss.WaitForConnection();
IFormatter f = new BinaryFormatter();
MyObject messageReceived = (MyObject)f.Deserialize(cs);

此外,当我添加到接收器时,我还有另一个错误“Stream不支持搜索”。

ss.Position =0;

用作消息类型的类:

[Serializable]
public class MyObject
{
    public string MyProp1 { get; set; }
    public int MyProp2 { get; set; }
}

0 个答案:

没有答案