В настоящее время я пытаюсь выполнить проект, который прослушивает несколько портов и получает входящие данные.Нитевидный сетевой прослушиватель с возвращаемыми значениями
DeviceListener класс:
-Есть метод, называемый PortListener. Требуется два параметра: IP и порт. Он постоянно прослушивает определенный порт для входящих данных.
-The Другой метод называется StartListen, который запускает PortListener в потоке.
Основная программа:
-Он получает список портов и начинает PortListener для каждого порта с использованием StartListen метода.
Psuedo Like Code:
class DeviceListener()
{
private string PortListener(string ip, int port)
{
//listen ip and port.
//wait for data.
//recieve and return data.
RecieveData();
string data = recieved data;
return data;
}
public void StartListen(string ip, int port)
{
//start PortListener in a thread
Thread t = new Thread (() => PortListener(ip,port));
t.Start();
}
}
void Main()
{
ip = ip adress;
List portlist;
foreach (port in portlist)
{
string data = DeviceListener.StartListen(ip, port);
}
}
Моя проблема: я просто не могу вернуть полученные данные в свою основную программу.
Есть ли способ получить полученные данные для каждого потока PortListener?
Спасибо Вадим. Я посмотрю на статьи. – ozz
Это именно он в правильном направлении, с точки зрения потоковой передачи, для управления входящими данными. В зависимости от количества ожидаемых соединений вариант 2, вероятно, лучше. Сохраните данные, сообщите поток, который у вас есть, и верните его. Это позволяет очень малую задержку при обслуживании других соединений. Нить может процесс неторопливо. –