【发布时间】:2021-01-28 17:42:42
【问题描述】:
我不确定这是怎么发生的,但我有一段代码可以简化为以下内容:
var tcpClient = CreateAndConnect();
var networkStream = tcpClient.GetStream();
var streamWriter = new StreamWriter( networkStream, Encoding.UTF8 );
var msg = GetMessage();
//if i write this msg directly with this code block i will get a successful response
var bytes = Encoding.UTF8.GetBytes( msg );
await networkStream.WriteAsync( bytes, 0, bytes.Length );
//if instead i write to the streamwriter and flush it fails
streamWriter.Write( msg );
streamWriter.Flush();
我检查了在wireshark中发送的数据包,它们实际上相差3个字节。我对数据包了解得不够多,无法知道究竟有什么区别,尽管我可以肯定地说,两者都包含完整的消息。
【问题讨论】:
-
3 字节?也许是 0xEF 0xBB 0xBF?然后是 UTF8 编码的 BOM(字节顺序标记)。另见stackoverflow.com/questions/5266069/…
标签: c# streamwriter networkstream