У меня есть несколько устройств, которые прослушивают один и тот же порт. Я просто отправляю разные сообщения, такие как A, B, C и получаю некоторые значения среды. Все устройства имеют разные IP-адреса. Я пытаюсь установить асинхронное соединение с устройством и синхронно отправлять сообщения на датчики.
для асинхронных операций, связанных с вводом-выводом, я в основном следую this ! и реализовано на основе того, что он написал. Вот что я реализовал.
static async Task CallingMethodAsync()
{
List<string> devices = new List<string>
{
"10.20.30.116",
"127.0.0.1",
"10.20.30.149",
"10.20.30.100"
};
List<string> messages = new List<string>
{
"A",
"B",
"C",
"D",
};
List<Task> deviceList = new List<Task>();
foreach (var device in devices)
{
foreach (var message in messages )
{
deviceList.Add(ConnectAsClientAsync(device, message));
}
}
await Task.WhenAll(deviceList);
}
static Task ConnectAsClientAsync(string device,string message)
{
return new Task( () =>
{
byte[] ClientRequestBytes = Encoding.UTF8.GetBytes(message);
try
{
using (var tcpClient = new TcpClient(device, 11000))
{
Console.WriteLine("Connected ->>" + device + " from port:" + port);
using (var networkStream = tcpClient.GetStream())
{
networkStream.Write(ClientRequestBytes, 0, ClientRequestBytes.Length);
byte[] bytesToRead = new byte[tcpClient.ReceiveBufferSize];
int bytesRead = nwStream.Read(bytesToRead, 0, tcpClient.ReceiveBufferSize);
var response = Encoding.ASCII.GetString(bytesToRead, 0, bytesRead);
Console.WriteLine("response ->>" + response+ " from device:"+device);
}
}
}
catch (SocketException ex)
{
Console.WriteLine("No Answer!! from ->>" + device + " from port:" + port);
}
catch (Exception e)
{
Console.WriteLine("Not Connected ->>" + device + " from port:" + port);
}
});
}
Я не получаю ответ муравья, даже не могу подключиться к устройствам, даже если они слушают. Он просто застрял и ничего не печатает. Я не знаю, в чем проблема.
Любая помощь приветствуется.