#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 программы. Первый, который отправляет сообщения на сервер, второй сервер, который будет размещен в всегда доступном месте в Интернете — он будет отвечать за сообщения в очереди, и третий, который будет задавать серверу вопросы.