我有一个ASP.NET CORE MVC Web应用程序,需要与TcpServer进行通信以完成特定任务。我在Web应用程序中编写了一个类来管理对该TcpServer的请求。
我的Tcp客户端类包含一个名为Request(string message)的方法,旨在由ASP.Net Web应用程序调用TcpServer,并返回TcpServer的响应。该方法如下所示:
注意,我在应用程序中多次调用此方法。因此,我不断地创建(因此连接)和关闭TcpClient和NetworkStream。
我已经查看了MSDN文档和栈溢出。我看到的所有示例都只发送单个请求。这对我没有真正帮助,因为在Web应用程序的生命周期中,我将多次发送请求。它将是非常频繁的请求。我想了解如何管理这个问题。
我是TCP服务器和客户端的新手。什么是正确的生命周期?使用TcpClient和NetworkStream的正确方式是什么?
更具体地说,我应该在每个请求上创建并关闭TcpClient吗?还是TcpClient应该是一个在我的Web应用程序的整个生命周期内保持打开状态的单例......在这种情况下,我假设流应该是我应该在每个请求上打开和关闭的对象。
我的Tcp客户端类包含一个名为Request(string message)的方法,旨在由ASP.Net Web应用程序调用TcpServer,并返回TcpServer的响应。该方法如下所示:
public string Request(string message)
{
// Open stream and client.
TcpClient client = new TcpClient(this._ipAddr, this._port);
NetworkStream stream = client.GetStream();
// Write to stream
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
stream.Write(data, 0, data.Length);
// Read from stream to get response. Read 256 bytes at a time so
// as not to overload the system in case requests are ginormous.
Byte[p] data = new Byte[256];
string responseData = "";
int bytesRead;
while ( (bytesRead = stream.Read(data, 0, 256)) > 0)
{
responseData += System.Text.Encoding.ASCII.GetString(data, 0, bytesRead);
}
// Close stream and client
stream.Close();
client.Close();
return responseData;
}
注意,我在应用程序中多次调用此方法。因此,我不断地创建(因此连接)和关闭TcpClient和NetworkStream。
我已经查看了MSDN文档和栈溢出。我看到的所有示例都只发送单个请求。这对我没有真正帮助,因为在Web应用程序的生命周期中,我将多次发送请求。它将是非常频繁的请求。我想了解如何管理这个问题。
我是TCP服务器和客户端的新手。什么是正确的生命周期?使用TcpClient和NetworkStream的正确方式是什么?
更具体地说,我应该在每个请求上创建并关闭TcpClient吗?还是TcpClient应该是一个在我的Web应用程序的整个生命周期内保持打开状态的单例......在这种情况下,我假设流应该是我应该在每个请求上打开和关闭的对象。