Трансляция на несколько IP-адресов в C # - PullRequest
1 голос
/ 04 февраля 2012

Я хочу отправить короткое сообщение всем IP-адресам в подсети в C #.Я использую TCPClient, и проблема в том, что функция TCPClient.Connect () занимает хорошие 20 секунд, чтобы выдать свое исключение, если ничего не использует этот IP.Я бы надеялся на что-то порядка пары миллисекунд, если это возможно.

Все, что я действительно хочу сделать, это отправить пару байтов на каждый адрес и получить ACK от определенных.Если есть способ сделать это без явного использования Connect (), TCPClient или даже просто установки тайм-аута соединения, о котором я не знаю, я мог бы вместо этого легко переключиться на это.

I 'Я хочу запустить эту программу на нескольких компьютерах, и эта широковещательная рассылка будет использоваться для того, чтобы каждый экземпляр знал IP-адреса других экземпляров.Поэтому на самом деле все, что мне нужно, это отправить пару байтов для идентификации.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2012

Почему бы не транслировать по UDP-адресу?Если клиенты прослушивают этот адрес, они получат сообщение (хотя это не гарантируется, как TCP), если их там нет, вещателю все равно.Похоже, вам нужен UDP, который больше похож на широковещательную рассылку всем, кто слушает сценарий.

1 голос
/ 04 февраля 2012

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

...