在我的 Windows 服务中,我需要将数据流式传输到 tcp 服务器。我声明了一个全局 TcpClient 和 NetworkStream 并在服务启动时启动它们。每 30 秒,我会通过大约 30-40 个字符串的数组发送到 tcp 服务器。
发送方法如下所示:
private void sendMessage(string message)
{
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
Globals._stream.Write(data, 0, data.Length);
if (Globals._responseEnabled)
{
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = Globals._stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
if (Globals._logStream)
Globals._el.writeEventToWindowsLog("Received: " + responseData, "Info");
}
}
问题是每 30 秒只发送几个数据包,其中包含所有字符串,我希望每个字符串在一个数据包中发送。
那么如何让 NetworkStream.write 方法立即发送数据包呢?如果我每次调用 send 方法(大约每分钟 60 次)时都声明一个新的 TCPClient 和 NetworkStream,则数据是单独发送的,但这不是一个很好的解决方案。我试过 NetworkStream.flush 但那不起作用..