流对网络传输有什么好处? (C#)

时间:2016-04-30 13:53:10

标签: c# networking serialization stream

我是编程新手。目前我正在写一个小聊天程序来学习一些东西。

现在我问自己,为什么一直在谈论流(NetworkStreams)作为在C#中传输数据的解决方案?

在我的litle工具上,我传输(并序列化)这样的数据:

    internal void sendMessageObject(Message message)
    {
        byte[] _data;

        BinaryFormatter _bf = new BinaryFormatter();
        MemoryStream _ms = new MemoryStream();

        _bf.Serialize(_ms, message);

        _data = _ms.ToArray();

        clientSocket.Send(_data);
    }

和接收方这样:

private void readData()
    {
        byte[] buffer;

        buffer = new byte[Accepted.Available];
        Accepted.Receive(buffer);

        MemoryStream ms = new MemoryStream(buffer);
        BinaryFormatter bf = new BinaryFormatter();
        Message message = (Message) bf.Deserialize(ms);


        MainWindow.writeToMessages(
            String.Format("[" + message.getMessageTime() + 
            "] " + message.getNickname() + 
            ": " + message.getMessageText() + 
            Environment.NewLine));
    }

它有什么问题或使用Streams带来任何显着优势吗?

由于

1 个答案:

答案 0 :(得分:0)

只想总结给出最终答案的答案:

简而言之: 大于1500字节的数据包将以接收信号的异常结束,因为接收方不知道完整网段需要多少数据包。

如果您只发送非常小的包装,并且您可以确定不会分成多个包装,这个问题就可以了!否则使用溪流!

感谢@jdweng

再见