我是编程新手。目前我正在写一个小聊天程序来学习一些东西。
现在我问自己,为什么一直在谈论流(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带来任何显着优势吗?
由于
答案 0 :(得分:0)
只想总结给出最终答案的答案:
简而言之: 大于1500字节的数据包将以接收信号的异常结束,因为接收方不知道完整网段需要多少数据包。
如果您只发送非常小的包装,并且您可以确定不会分成多个包装,这个问题就可以了!否则使用溪流!
感谢@jdweng
再见