长话短说,我正在尝试使用StreamWriter通过TcpClient发送字符串。
除了交换这些示例外,不更改任何其他代码。它们产生不同的结果。
在代码示例1中
StreamReader检测到它有可用的数据,并接收到消息。
在代码示例2中
示例1-写入方法
public void SendMessage(string message)
{
message = "TestMessage";
using (var sw = new StreamWriter(stream))
{
sw.Write(message);
sw.Flush();
}
}
示例2-写入方法
public void SendMessage(string message)
{
message = "TestMessage";
var encoding = new UTF8Encoding(false, true);
using (var sw = new StreamWriter(stream, encoding, 1024, true))
{
sw.Write(message);
sw.Flush();
}
}
读取方法
public string ReadMessage()
{
if (!stream.DataAvailable)
return null;
string message = sr.ReadToEnd();
return message;
}
注释
:如果我最后将两个示例与工作示例放在一起,我会收到消息“TestMessageTestMessage”,因此它肯定正在写入流,但它没有将DataAvailable设置为true?
知道为什么吗?