2013-10-25 3 views
0

Мне нужна ваша помощь Я пытаюсь создать клиент-серверное приложение. Клиент - Android-телефон, а сервер - ПК (C#). Я хочу транслировать в реальном времени (насколько это возможно) предварительный просмотр камеры. Я думаю, что я должен использовать в C# UDP и в java DatagramSocket. Я добавил функцию для предварительного просмотра с камеры, и я пытаюсь отправить массив байтов на сервер, но он не работает. Может быть, и есть какое-то решение для меня, вот мой кодЖивая камера от android до сервера C#

private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback() 
    { 
      public void onPreviewFrame(byte[] data, Camera Cam) { 
        Log.e("CombineTestActivity", "Preview started"); 
        Log.e("CombineTestActivity", "Data length = " 
          + data.length);     
        try 
        { 
         InetAddress serverAddr = null; 
        try { 
         serverAddr = InetAddress.getByName("192.168.0.102"); 
        } catch (UnknownHostException e) { 

         e.printStackTrace(); 
        } 
        DatagramPacket packet = new DatagramPacket(data, data.length, serverAddr, 9050); 
        updatetrack("Client: Sending '" + new String(data) + "'\n"); 
        Log.e("Client ", "C: Sending"); 
        try { 
         socket.send(packet); 
        } catch (IOException e) { 

         e.printStackTrace(); 
        }     

      } 
    }; 

ответ

0

Этот вопрос очень, очень сложный и не так просто, как это может представить это сам. Позвольте мне указать на несколько вещей, которые могут вам помочь:

  • Ознакомьтесь с разницей в UDP и TCP. Учитывая объем данных, которые вы отправляете, я бы рекомендовал UDP. Однако имейте в виду, что UDP не будет пытаться восстановить какие-либо данные, которые были потеряны при передаче по сети.

  • Если я правильно помню, один из них маленький, а другой - большой. Учитывая, что ваши данные являются чистыми байтами, вам нужно будет исправить порядок байтов (исправить меня, если я ошибаюсь), который получен. Это целая тема сама по себе.

  • Рассмотрите альтернативы, такие как Node.js, которые обертывают много вещей для вас, поэтому вам не нужно иметь дело с сокетами, где они вызывают наибольшую проблему, по крайней мере, на стороне сервера. Я раньше не использовал Node.js, но похоже, что библиотека работает очень хорошо и сэкономит вам массу неприятностей. Если вы никогда раньше не занимались программированием сокетов, это живой ад, если вы не знаете, что делаете; особенно если вы хотите обрабатывать несколько соединений.

  • Это в основном сводится к тому, что два двух конца счастливы и способны правильно разговаривать друг с другом. Я не уверен, что у вас уже есть сервер, но самая большая проблема будет заключаться в том, чтобы они правильно разговаривали друг с другом. Вы должны сообщить серверу точно, чего ожидать, особенно если вы хотите отправить данные, отличные от данных изображения.

Надеюсь, это поможет!

Смежные вопросы