UDP-Kommunikation zwischen PC und Android über Ethernet

1. Ich teste mit einem gerooteten Nexus 5, das auf Lollipop 5.1 läuft.

2. Dies ist alles ohne WLAN-Verbindung.

Ich versuche, UDP-Pakete zwischen einem PC und einem Android-Gerät mit einem OTG-Kabel und einem Ethernet-Dongle zu senden. Wenn der PC verbunden ist, denkt er, dass der Android ein nicht identifiziertes Netzwerk ist (kein Internetzugang) und der Android erkennt das Gerät als eth0 mit einer IP von 0.0.0.0.

eth0   UP   0.0.0.0

Ich füge eth0 eine IP hinzu, indem ich das folgende Unix-Skript ausführe:

#!/bin/sh
netcfg eth0 up
ifconfig eth0 192.168.1.200 netmask 255.255.255.0
route add default gw 192.168.1.1 dev eth0
ping -c 1 192.168.1.1

Nach dem Ausführen des Skripts erscheint eth0 in der Befehlszeile als:

eth0   UP   192.168.1.200

Ich verwende Wireshark, um Pakete zu verfolgen, und wenn ich versuche, eine Schnittstelle zwischen dem PC und Android zu öffnen, erhalte ich eine Fehlermeldung wie folgt:

(Fehler beim Öffnen des Adapters: Das System kann das angegebene Gerät nicht finden. (20)).

Auch wenn ich versuche, den PC vom Android zu PINGen, geht das Paket zu 100% verloren.

Es scheint also, als hätte ich keine Verbindung zwischen PC und Android. Jeder Beitrag zum Thema wäre sehr hilfreich.

Verbindest du N5 und PC direkt oder über einen Router? IP-Informationen über den PC wären ebenfalls hilfreich, wie IP, Netzmaske und ob es DHCP oder statisch ist.
N5 und PC sind direkt verbunden. Endspiel ist es, es als Hardwareschnittstelle zu verwenden, nicht anders als I2C oder RX. DHCP ist aktiviert, IP 169.254.57.56, Netzmaske 255.255.255.0
Ich habe 169.254.57.55 im Skript verwendet.
Macht Sinn, aber wenn Sie die beiden über IP-Netzwerke verbinden möchten, müssen sie sich im selben Subnetz befinden. Ihr PC weist sich selbst eine IP-Adresse zu, weil er keinen DHCP-Server finden kann. Versuchen Sie, Ihrem PC 192.168.1.1 statisch dasselbe Subnetz 255.255.255.0 zuzuweisen.
Ja! Musste nur IPs und Standard-Gateways richtig einstellen. Danke für die Hilfe, ich habe nicht viel von einem Netzwerkhintergrund. Eher ein Hardware-Typ.
Schön, dass es funktioniert! Ich habe meinen Kommentar in eine Antwort kopiert. Wenn Ihre Frage damit abgeschlossen ist, können Sie sie akzeptieren?

Antworten (2)

[Aus Kommentaren:] Wenn Sie die beiden über IP-Netzwerke verbinden möchten, müssen sie sich im selben Subnetz befinden. Ihr PC weist sich selbst eine IP-Adresse zu, weil er keinen DHCP-Server finden kann. Versuchen Sie, Ihrem PC 192.168.1.1 statisch dasselbe Subnetz 255.255.255.0 zuzuweisen.

Ich denke, Reverse-Tethering würde Ihr Problem lösen.

Android-Reverse-Tethering-Schritte:

Hinweis: Funktioniert nur auf einem gerooteten Android-Telefon.

  1. Schließen Sie das Android-Gerät über USB an.
  2. USB-Tethering aktivieren. Gehen Sie dazu zu Einstellungen → Mehr... → Tethering & mobiler Hotspot → USB-Tethering .

  3. Geben Sie auf dem Hostcomputer Folgendes ein:

    $ ifconfig usb0 10.42.0.1 netmask 255.255.255.0 
    $ echo 1 > /proc/sys/net/ipv4/ip_forward 
    

    Der Befehl für sudo lautet:

    $ sudo 'echo 1 > /proc/sys/net/ipv4/ip_forward' 
    
  4. Geben Sie auf einem Android-Gerät (für diesen Schritt müssen Sie ADB auf dem Host-PC installieren) Folgendes ein:

    $ adb shell 
    $ su 
    $ netcfg rndis0 dhcp
    

    Wenn es die IP-Adresse nicht erhält, weisen Sie sie manuell zu:

    $ netcfg rndis0 10.42.0.2 netmask 255.255.255.0 
    $ route add default gw 10.42.0.1 dev rndis0 
    

Jetzt würde das Internet im Android-Telefon funktionieren.

Versuchen Sie zur Überprüfung den Befehl ping www.google.com.

Für mich geht das.

Android bietet nicht die Möglichkeit, USB-Tethering mit den Kombinationen aus Ethernet-Dongle und OTG-Kabel einzuschalten, dh es handelt sich nicht um eine USB-Verbindung.
Ich habe es mit gerootetem Telefon und PC mit Ethernet-Verbindung versucht und es funktioniert für mich gut.
Sie verwenden ein OTG mit einem Ethernet-Adapter? Hier ist ein Beispiel plugable.com/products/usb2-otge100 . Und es wird keine Internetverbindung geben. Als Hardwareschnittstelle wird UDP verwendet.
Ich habe mein Handy per USB mit dem PC verbunden
Etwa 4. , sollte es nicht "On PC" sein, da Sie die ADB-Shell vom PC aus ausführen.