UdpClient получают на широковещательном адресе

Проблема в том, что в вашем примере выберите [], и для подсписка требуется список в качестве входных данных, но ваши входные данные не являются списком. Причина этого заключается в том, что когда в элементах есть переменная (которая будет формировать список), она больше не рассматривается как простой список, означающий, что пробел (пробел) нельзя использовать для разделения значений. В этом случае точка с запятой обязательна.

q) x:2
q) (1;x) / (1 2)

Выберите команду: Измените ввод на (x; 10), чтобы он работал.

q) t:([]id:1 2 3; v: 3 4 5)
q) {select[(x;2)] from t} 1
`id  `v
---------
 2    4
 3    5

Другой альтернативой является использование столбца «i» (индекс):

q) {select from t where i within x + 0 2} 1

Команда подсписка: Преобразовать левый ввод функции подсписка в список (х; 10)

.
 q) {(x;2) sublist t}1
10
задан Kara 7 January 2015 в 19:04
поделиться

4 ответа

Вот список некоторых кодов, которые я сейчас выполняю использование в рабочем приложении, которое работает (у нас есть немного больше, чтобы справиться со случаем, когда клиентские серверные приложения работают в автономной установке). Его работа заключается в получении уведомлений о том, что сообщения готовы к обработке. Как отметил Адам Александр, ваша единственная проблема в том, что вам нужно использовать IPAddress.Any вместо IPAddress.Broadcast. Вы будете использовать IPAddress.Broadcast только тогда, когда хотите отправить широковещательный пакет UDP.

Настройка клиента udp

this.broadcastAddress = new IPEndPoint(IPAddress.Any, 1234);
this.udpClient = new UdpClient();
this.udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
this.udpClient.ExclusiveAddressUse = false; // only if you want to send/receive on same machine.

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

this.udpClient.Client.Bind(this.broadcastAddress);
this.udpClient.BeginReceive(new AsyncCallback(this.ReceiveCallback), null);

Надеюсь, это поможет, вы сможете адаптировать его для синхронной работы без особых проблем. Очень похоже на то, что вы делаете. Если после этого вы все еще получаете сообщение об ошибке, значит, что-то еще использует порт, который вы пытаетесь прослушать.

Итак, чтобы уточнить.

IPAddress.Any = Используется для получения. Я хочу прослушать пакет, поступающий на любой IP-адрес. IPAddress.Broadcast = Используется для отправки. Я хочу отправить пакет любому, кто слушает.

20
ответ дан 3 December 2019 в 16:30
поделиться

Эта ошибка означает, что протокол не может привязаться к выбранной комбинации IP / порт.

Я не использовал UDP-трансляцию в , но я помню, вам нужно использовать разные диапазоны IP-адресов.

0
ответ дан 3 December 2019 в 16:30
поделиться

для ваших целей, я думаю, вы захотите использовать IPAddress.Any вместо IPAddress.Broadcast. Надеюсь, это поможет!

5
ответ дан 3 December 2019 в 16:30
поделиться

Нет ничего плохого в том, как вы настроили свой UdpClient. Вы пробовали другой номер порта? Возможно, 1234 уже используется в вашей системе другим приложением.

0
ответ дан 3 December 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: