Einzelnen Beitrag anzeigen

Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#1

Android Daten empfangen über Wifi von Delphi Windows Projekt

  Alt 14. Mai 2012, 09:37
Hi,

ich habe einen Windows Mediaplayer programmiert in Delphi, und habe nun eine Remote App für Android programmiert.
Die Steuerung des Players so geht schonmal ohne Probleme.
Nun möchte ich die ganze Playliste vom Windows Rechner beim Android Handy empfangen, Das geht aber nicht, ich habs einmal am stück, alle pfade der playliste hintereinander mit ; getrennt versucht, aber da hängt sich die app gleich ganz auf, wenn es mehr als 2 Pfade hintereinander sind.
Wenn ich erstmal sende PLAYLISTSTART, dann jedes einzelne empfange und so lange die schleife laufen lass bis PLAYLISTEND kommt, da geht einfach überhaupt nichts, nicht einmal einen bekomme ich so.
Also vom senden her vom Windwos Rechner aus in Delphi is kein Problem denke ich, der Fehler muß beim Empfänger sein, also im Android code, und den hier nutze ich:

Delphi-Quellcode:

        public void StartReceiverX(final String Message) {
                       try{
                           int port = 1778;         
                           Boolean GotMessage = false;
                           //InetAddress serv_address = InetAddress.getByName(newip);
                           DatagramSocket serversocket = new DatagramSocket(port);//, serv_address);
                           serversocket.setReuseAddress(true);
                           serversocket.setBroadcast(true);
                           Looper.prepare();
                           TimeOut = 0;
                           send_btn(Message);  //hier sende ich kurz starte playlist transfer an delphi program
                           while (GotMessage == false) {
                             try{   
                                byte [] buf = new byte[32768]; 
                              DatagramPacket packet= new DatagramPacket(buf, buf.length);
                                packet.setLength(buf.length);   
                                serversocket.receive(packet);                          
                            String ReceivedMessage = new String(packet.getData(), 0, packet.getLength());                              
                       //---------ALLE AM STÜCK----------------------------------------------------------------------------
                            int i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                            if (i > -1) {
                               if (ReceivedMessage.toString().indexOf(";") > -1) {
                                   GotMessage = true;   
                                 MRUtils.ReceivedList.clear();
                                 MRUtils.appendLog("MRPLAYLIST Receiving ");
                                 String[] separated = ReceivedMessage.toString().split(";");
                                 for(int x=0; x < separated.length; x++){   
                                      if (separated[x].indexOf("MRPLAYLISTEND") > -1) { separated[x] = separated[x].replaceAll("MRPLAYLISTEND", ""); }

                                    MRUtils.ReceivedList.add(separated[x]);
                                    MRUtils.appendLog("added "+separated[x]);       
                                 }
                               }
                            }
                          //----------ALLE EINZELN NACHEINANDER---------------------------------------------------------------------------
                            i = ReceivedMessage.indexOf("MRPLAYLISTSTART");
                            if (i > -1) {
                               MRUtils.ReceivedList.clear();
                               ReceivingPlaylist = true;
                               MRUtils.appendLog("MRPLAYLIST START ");                               
                            }
   
                             i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                            if (i > -1) {
                               GotMessage = true;   
                               MRUtils.appendLog("MRPLAYLIST Receiving sucessfully ended");
                               ReceivingPlaylist = false;
                            }
                            
                            if (ReceivingPlaylist) {
                               i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                               if (i == -1) {
                                 i = ReceivedMessage.indexOf("MRPLAYLISTSTART");
                                 if (i == -1) {
                                   MRUtils.appendLog("MRPLAYLIST Receiving "+ ReceivedMessage.toString());
                                   MRUtils.ReceivedList.add(ReceivedMessage.toString()); 
                                 }

                               }    
                            }
                            if (ReceivingPlaylist) {
                              TimeOut = TimeOut +1;
                              if (TimeOut >= 2000) {
                                   GotMessage = true;   
                                 MRUtils.appendLog("MRPLAYLIST Receiving Timed Out");
                                 ReceivingPlaylist = false;
                              }
     
                            }
                          //-------------------------------------------------------------------------------------
                            }
                            catch (Exception e){                                 
                               possibleCover = false;
                            }

                          } //Schleifenende
                          serversocket.close();
                        }
                        catch (Exception e){
                        }
          
        }

jemand ne idee was ich falsch mache?
Tom
Just DO it

Geändert von Cylence (14. Mai 2012 um 10:27 Uhr)
  Mit Zitat antworten Zitat