Обнаружение устройства в Windows Phone 7 - PullRequest
0 голосов
/ 20 декабря 2011

Я не могу обнаружить устройства, присутствующие в сети. Есть два приложения, которые я использую. Один написан на C ++, а другой - приложение для Windows Phone 7. Из Wp7 я отправляю широковещательную рассылку UDP, на которую ссылался Как транслировать UDP-пакет на WP7 Mango? Я могу транслировать сообщения от wp7 и получать в приложении C ++. Но я не могу получить UDP-пакет из кода C ++. Вот мой код Код C #

private void PageTitle_Tap(object sender, GestureEventArgs e)
        {
            var ipAddress = IPAddress.Parse("255.255.255.255");
            var endpoint = new IPEndPoint(ipAddress, 4998);
            byte[] data = Encoding.UTF8.GetBytes("hello|4998");
            var args = new SocketAsyncEventArgs();
            args.RemoteEndPoint = endpoint;
            args.SetBuffer(data, 0, data.Length);
            args.Completed += new EventHandler<SocketAsyncEventArgs>(args_Completed);
            socket = new Socket(AddressFamily.InterNetwork,
                SocketType.Dgram,
                ProtocolType.Udp);
            bool result = socket.ConnectAsync(args);

        }

        void args_Completed(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError != SocketError.Success)
            {
                return;
            }

            switch (e.LastOperation)
            {
                case SocketAsyncOperation.Connect:
                    bool res = e.ConnectSocket.ReceiveFromAsync(e);
                    break;

                case SocketAsyncOperation.Send:
                    break;

                case SocketAsyncOperation.Receive:
                    break;
            }
        }

C ++ код

ServerAddress.sin_family= AF_INET; 
ServerAddress.sin_addr.s_addr= INADDR_ANY;
ServerAddress.sin_port  = htons (PORT_DESKTOP); 
ServerSocket = socket (PF_INET, SOCK_DGRAM, 0);

sendto (ServerSocket, Buffer, sizeof (Buffer), 0, (LPSOCKADDR) &ClientAddress, Length);

Я также использовал создание другого сокета, используя IPADDRESS. Любой, чтобы получить сообщение. Но я не могу получить ответ от кода c ++.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 декабря 2011

Вам не хватает включения SO_BROADCAST ?

Опции гнезда SOL_SOCKET :

SO_BROADCAST да да DWORD (логическое значение) Настройка сокета для отправки данные трансляции. Эта опция действительна только для протоколов, которые поддерживают вещание (например, IPX и UDP).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...