내 Windows 서비스에서 데이터를 TCP 서버로 스트리밍해야합니다. 글로벌 TcpClient 및 NetworkStream을 선언하고 서비스가 시작될 때이를 시작합니다. 30 초마다 약 30-40 개의 문자열 배열을 통해 TCP 서버로 전송합니다.NetworkStream을 사용하여 데이터 보내기
send 메소드는 다음과 같다 :
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 초, I는 문자열이 하나 개의 패킷마다 전송 될 것인지이다.
그래서 NetworkStream.write 메서드를 사용하여 패킷을 즉시 보내려면 어떻게해야합니까? send 메소드 (매분 약 60 회)를 호출 할 때마다 새 TCPClient와 NetworkStream을 선언하면 데이터가 별도로 전송되지만 아주 좋은 솔루션은 아닙니다. NetworkStream.flush를 시도했지만 작동하지 않았습니다.
감사합니다. – mdc