Получение C # с помощью stream reader

#c# #streamreader

#c# #streamreader

Вопрос:

Может кто-нибудь, пожалуйста, дать мне совет или руководство о том, как создать мини-программу, которая получает только сообщения?

Я могу создать код, который может получать, но только если я отправляю сообщение (и я ожидаю ответа)

Но как насчет того, что программа просто ждет?

Я получил этот код при получении:

 client.Connect("192.168.1.100",80);
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
String r = "";
sw.AutoFlush = true;

while(true)
{
    r = sr.ReadLine();
    Console.WriteLine(r);
    Debug.WriteLine(r);
    if (sr.Peek() < 0) break;
} 
  

Это работает только так, как я сказал. Если я отправляю сообщение первым, то приходит ответ.

Комментарии:

1. Кажется, для этого вам нужна служба Windows? Вы можете создать службу Windows для запуска в фоновом режиме, чтобы каждую секунду вы могли подключаться и проверять сообщение.

2. Я не уверен, что понимаю ваш вопрос. Если я вас правильно понял: если программа на компьютере с адресом 192.168.1.100, которая отвечает на ваши вызовы через порт 80, ничего вам не отправляет, читать будет нечего (предполагая, что это веб-сервер, вам придется сначала отправить ему что-нибудь). Итак, если вы хотите, чтобы ваша программа периодически получала данные, вам понадобится сервер, который отправляет вам данные.

Ответ №1:

Вы захотите взглянуть на использование объекта TcpListener в сочетании с TcpClient. По этой ссылке приведен хороший пример:

Ответ №2:

Вы можете использовать серверный сокет, который реализован в классе TcpListener, но при подключении к нему возникают некоторые проблемы, когда ваш компьютер находится в локальной сети. Я думаю, что вам следует написать 3 программы. Первый, который отправляет сообщения на сервер, второй сервер, который будет размещен в всегда доступном месте в Интернете — он будет отвечать за сообщения в очереди, и третий, который будет задавать серверу вопросы.