Что я делаю неправильно? Мой сокет не получит данные, отправленные на него - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть отдельная программа C#, которая отправляет данные на любой IP-адрес, указанный в нем.Данные закодированы таким образом, что я могу декодировать их снова (UTF-8) и отправить через UDPClient.Я настроил эту программу для отправки данных в порт на моей машине, который я пересылаю на Android Emulator.В моем приложении для этого порта установлен DatagramSocket, но мой приемный вызов не возвращает мне никаких данных ...

Я точно знаю, что данные отправляются при отладке программы C#в операторе отправки я вижу, что он действительно отправляет данные ... Я подозреваю, что это что-то в моих настройках Socket, но я не знаю, что ...

private void updateUDPSocket(String IpAddress, String IpPort){
    Inet4Address ownIpAddress = null;
    int ownIpPort = 0;

    /*
     *  Try to recover the correct Inet4Address & Port.
     *  Catch all possible exceptions as well.
     */
    try{
        ownIpAddress = (Inet4Address) Inet4Address.getByName(IpAddress);
        ownIpPort = Integer.parseInt(IpPort);
    } catch (UnknownHostException uhe){
        uhe.printStackTrace();
    } catch (NumberFormatException nfe){
        nfe.printStackTrace();
    }

    // Check to see if the current socket is already initialised.
    if(mUDPSocket != null){
        // If so, close & nullify it.
        mUDPSocket.close();
        mUDPSocket = null;
    }

    // Create a new socket & catch the possible exception.
    try{
        mUDPSocket = new DatagramSocket(ownIpPort, ownIpAddress);
        mUDPSocket.setSoTimeout(TIME_OUT_IN_MILLIS);
    } catch (SocketException se){
        se.printStackTrace();
    }

    // Log current set address & port.
    Log.d(TAG, "UDPSocket set to address:" +
        mUDPSocket.getLocalAddress() + ":" + mUDPSocket.getLocalPort());
}

IP-адрес, который я передаюздесь либо 0.0.0.0 (в случае эмулятора), либо IP-адрес, восстановленный из WifiManager (в случае мобильного устройства).Это не дает сбоя при настройке сокета, но, скорее всего, я использую неправильный адрес?

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

1 Ответ

1 голос
/ 14 марта 2011

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

...