У нас есть устройство, которое принимает сообщения ascii по беспроводной сети, а затем отвечает значением, и я успешно реализовал это в решении Windows Forms 2010 в C#.Повторное использование TcpClient в C#
Я написал это как тестовое решение для подтверждения технологии, и фактические вызовы устройства будут выполнены на переносном устройстве Motorola MC55.
Теперь я написал дополнительное тестовое решение в Visual Studio 2008 и установил его на устройство, но подключение к TcpClient занимает около 30 секунд каждый раз при вызове на мобильном устройстве, где, как и в решении Windows, почти мгновенное.
Это слишком медленно, поэтому я начал смотреть на повторное использование TcpClient, но не имел никакого успеха и задавался вопросом, есть ли у кого-либо другие подобные проблемы и спросить, как они обошли его или кто-нибудь может предложить какие-либо советы о том, как повторно использовать TcpClient, поэтому мне не нужно создавать новый каждый раз, когда я хочу позвонить.
Код для подключения показан ниже ...
public static string GetValueFromDevice(string deviceIPAddress, int devicePort, string messageSentToDevice)
{
string returnValue = "";
try
{
TcpClient client = new TcpClient(deviceIPAddress, devicePort);
byte[] inData = System.Text.Encoding.ASCII.GetBytes(messageSentToDevice);
NetworkStream stream = client.GetStream();
stream.Write(inData, 0, inData.Length);
byte[] outData = new Byte[256];
int bytes = stream.Read(outData, 0, outData.Length);
returnValue = System.Text.Encoding.ASCII.GetString(outData, 0, bytes);
stream.Close();
client.Close();
}
catch (Exception ex)
{
returnValue = ex.Message;
}
return returnValue;
}
Или, может быть, статический клиент, хотя я тоже предпочел бы член экземпляра, если он не будет постоянно построен/уничтожен. –