Kann ServerSocket auf Android nicht verwenden

Ich versuche, auf einem Port mit ServerSocket auf einem Android-Gerät zu hören. Ich möchte in der Lage sein, eine Verbindung zu diesem Port über WiFi mit einem Computer auf dem gleichen Netzwerk zu verbinden.

Ich bekomme keine Ausnahme, wenn ich sie an einen Hafen binden, aber wenn ich netstat überprüfe, heißt es:

  • Java.lang.OutOfMemoryError in android während das Bild von der Galerie in android
  • Android Dropbox SDK Manifest Setup
  • Android 4.0 org.apache.http.conn.ConnectTimeoutException: Verbinden mit ... Zeitüberschreitung
  • ACCESS_COARSE_LOCATION-Berechtigung gibt eine Zellenturm-Präzision auf Android
  • Initialisieren von AppCompat 22.1.1 Dialog colorAccent vom App-Design funktioniert nicht
  • LoopJ AndroidAsyncHttp und JSON POST ARRAY
  •  Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 (null):4040 (null):* LISTEN 

    Ich habe unzählige Möglichkeiten versucht, es an localhost, 0.0.0.0, die WiFi LAN IP Adresse des Gerätes mit SocketInetAddress und InetAddress.getByName . Nichts scheint zu funktionieren

    Wenn ich versuche, mit dem Port von einem Computer in der gleichen WiFi (ich habe versucht sowohl netcat und Java Socket.connect() ), alles, was ich sehen kann in Wireshark ist eine ARP-Anfrage:

     Who has [phone's LAN address]? Tell [computer LAN address]. 

    Diese Anforderung wiederholt sich bis zum Zeitüberschreitung.

    Ich habe versucht, den umgekehrten Weg, indem Sie die ServerSocket auf dem Computer und die Verbindung zu diesem Port aus dem Telefon, das funktioniert sehr gut.

    Mein Testtelefon ist ein Samsung Spica i5700 mit einem benutzerdefinierten ROM.

    Irgendwelche Ideen?

    Bearbeiten: Der Code ist einfach wie dieser:

     ServerSocket server = new ServerSocket(); server.setReuseAddr(true); server.setTimeout(0); server.bind(new InetSocketAddress(4040)); Socket client = null; while((client = server.accept()) == null); // Connected enter code here enter code here 

  • Proguard Optimization Settings: Aktivieren von Klassenmischungen, Casts und Field / * in modernen API- und Proguard-Versionen
  • Machen Sie ViewPager-Snap mit kürzerem Drag
  • Wie bekomme ich eine Android-Service-Rückmeldung von einem Phonegap-Plugin
  • Android AutoCompleteTextView weiß auf weiß Dropdown Liste
  • Tabs + ViewPager + FragmentStatePagerAdapter - Wie man Fragment entfernt?
  • Java.lang.RuntimeException: Unbekannter Animationsname: objectAnimator
  • 3 Solutions collect form web for “Kann ServerSocket auf Android nicht verwenden”

    Anstatt mit server.bind zu versuchen, initialisieren Sie die Server-Socket wie folgt: server = new ServerSocket (4040);

    Auch wird server.accept () tatsächlich blockieren, bis eine Verbindung hergestellt wird, also brauchst du das nicht während der Schleife (siehe: http://download.oracle.com/javase/1.5.0/docs/api/java/ Net / ServerSocket.html # accept ())

    Ich kämpfte auch mit diesem und war nur in der Lage, eine Verbindung zu meinem Android-Server mit:

     ServerSocket myServerSocket = new ServerSocket(); String hostname = getLocalIpAddress(); myServerSocket.bind(new InetSocketAddress(hostname, myPort)); 

    Wo Hostname war die lokale IP, die ich mit der Funktion getLocalIpAddress () von dieser Seite bekam:

    https://github.com/Teaonly/android-eye/blob/master/src/teaonly/droideye/MainActivity.java

    Ich konnte diese Arbeit unter Verwendung von

      ServerSocket server = new ServerSocket( myTcpPort, 0, addr ); 

    Wo addr = InetAddress deines Telefons. Ansonsten scheint es nur an localhost zu binden (127.0.0.1). Auch ich benutze Port 8080.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.