#c# #android #udp #broadcast #lan
#c# #Android #udp #трансляция #локальная сеть
Вопрос:
Я пытаюсь создать отдельное приложение на ПК для многих устройств Android, использующих одну и ту же сеть Wi-Fi. Устройства найдут IP-адрес сервера, получив от него UDP-трансляцию, содержащую данные IP-адреса сервера. Я начал с создания образца udp-вещателя на C # и udp-приемника на java, но мне так и не удалось получить пакет на стороне Android. вот код :
C#:
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Broadcast, listenPort);
listener.Connect(groupEP);
listener.EnableBroadcast = true;
byte[] data = new byte[1024];
try
{
while (!done)
{
Console.WriteLine("broadcast");
Thread.Sleep(400);
listener.Send(data,2);
}
Код Android :
DatagramSocket socket;
try {
socket = new DatagramSocket(11000);
socket.connect(getBroadcastAddress(), 11000);
socket.setBroadcast(true);
byte[] buf = new byte[4];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
Разрешение на доступ в Интернет задано правильно в манифесте. все еще не удается получить пакеты.
Комментарии:
1. Привет @Mr.Me Я тоже пытаюсь сделать то же самое и не могу установить соединение, можете ли вы опубликовать свой отработанный код?
Ответ №1:
Предложения:
-
Убедитесь, что у вас нет брандмауэров (программных или аппаратных), блокирующих вас
-
Рассмотрите возможность использования Wireshark:
-
Посмотрите на этот пример:
Комментарии:
1. Спасибо, используя Wireshark, я обнаружил, что 255.255.255.255 не работает, вместо этого я использовал свой широковещательный адрес локальной сети 192.168.XX.255, и теперь пакет распространяется по сети. но все же я не получаю его на Android с помощью приведенного выше кода
2. Что вы имеете в виду, изменяя адрес на обоих концах? На какой адрес? Не могли бы вы опубликовать свой рабочий код?