c# – 将完整的消息写入NetworkStream或写入每条消息的部分是一
发布时间:2020-12-16 01:51:02 所属栏目:百科 来源:网络整理
导读:我想知道,向NetworkStream写一个完整的消息是否比在多个Write调用中编写一个消息的每个部分要好.例如,会像这样写完全面的消息…… NetworkStream ns = tcpClient.GetStream(); byte[] message = Encoding.ASCII.GetBytes("This is a message."); ns.Write(me
我想知道,向NetworkStream写一个完整的消息是否比在多个Write调用中编写一个消息的每个部分要好.例如,会像这样写完全面的消息……
NetworkStream ns = tcpClient.GetStream(); byte[] message = Encoding.ASCII.GetBytes("This is a message."); ns.Write(message,message.Length); ……比这样写更好的主意…… NetworkStream ns = tcpClient.GetStream(); byte[] message1 = Encoding.ASCII.GetBytes("This "); byte[] message2 = Encoding.ASCII.GetBytes("is "); byte[] message3 = Encoding.ASCII.GetBytes("a "); byte[] message4 = Encoding.ASCII.GetBytes("message."); ns.Write(message1,message1.Length); ns.Write(message2,message2.Length); ns.Write(message3,message3.Length); ns.Write(message4,message4.Length); 每种方法的程序性能或网络性能也有很大差异吗? 解决方法
在网络方面,它将是相同的.但是在客户端上,如果使用第二种方法,则不需要将整个消息加载到内存中.在处理大量数据时,这可能很有用.例如,假设您要发送大文件.您可以以块的形式读取这些文件,这样您就不需要将整个文件内容加载到内存中并将其以块的形式发送到网络中.客户端上的内存中一次只能加载一个块.
但显然如果你已经在内存中已经有了整个消息,请不要费心并将其一次性写入网络套接字. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |