Невозможно отправить данные через UDP в UWP - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь отправить данные через UDP в приложении UWP.Однако я не вижу данных, отправляемых на Wireshark.

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

UdpClient client = new UdpClient();
client.EnableBroadcast = true;
client.Connect(IPAddress.Broadcast, 9520);
Byte[] senddata = Encoding.ASCII.GetBytes("Hello!");
client.Send(senddata, senddata.Length);
client.Close();

Я что-то упускаю здесь очевидное?Я использую Visual Studio 2017 для создания этого приложения UWP.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

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

Я не настраивал возможности до того, как задал этот вопрос.Однако я наткнулся на страницу и включил некоторые возможности (Интернет (клиент и сервер), Интернет (клиент), частные сети (клиент и сервер)).

После их настройки мойпредыдущий код работает нормально.

Если вы столкнулись с той же проблемой, настройте возможности, перейдя в Package.appxmanifest -> Capabilities, а затем перестройте решение.После правильного включения возможностей ваше приложение должно отправить данные.:):)

0 голосов
/ 11 февраля 2019

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

        byte[] package= Encoding.ASCII.GetBytes(udpInfo[2].ToString());
        IPEndPoint ep = new IPEndPoint(IPAddress.Parse(udpInfo[0].ToString()), Convert.ToInt32(udpInfo[1]));
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

        try
        {
            sock.SendTo(package, ep); //send packet to sw ip
            Console.WriteLine("package sent");
            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine("package can't sent");
            return false;
        }

РЕДАКТИРОВАТЬ: объявление массива udpInfo ниже:

public ArrayList udpInfo = new ArrayList(); // 0-ip 1-port 2-command
udpInfo[0] = "192.168.1.1"
udpInfo[1] = 1111
udpInfo[2] = "some commands"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...