Daten auch im Internet übertragen - Gehts mit Socket?

  • Antworten:19
DennisG
  • Forum-Beiträge: 35

30.10.2012, 23:57:46 via Website

Hallo :D
Ich kann Daten über eine Socket Verbindung im selben Netzwerk von Android Handy zu PC und umgekehrt liefern.
Doch wie bekomme ich das hin das man auch Daten ins Internet bekommt? Also falls ich jetzt bei einem Freund im Netzwerk bin und will die Daten auf mein Computer senden geht das mit Socket? Oder muss ich da zu etwas ganz anderem Wechseln?

T.I.A. (:

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

31.10.2012, 08:14:38 via Website

Prinzipiell punktioniert Socket im Internet genau gleich.
Das einzige Problem, das du haben wirst, ist von außen auf deinen Rechner zu kommen, der sicherlich hinter einem Router hängt.
Dazu brauchst Du dann einen Port-Weiterleitung im Router und einen Dyndns Account, um deinen Rechner trotz dynamischer IP in den Weiten der Internets anzusprechen.

Antworten
DennisG
  • Forum-Beiträge: 35

31.10.2012, 16:07:43 via Website

Richtig, nur wie kann man das umgehen?
Gibt es eine Möglichkeit Computer und Android oder sogar Android und Android miteinander zu verbinden die sich beide im Internet aufhalten ohne so (ich sag mal "Fachmännische") Sachen anzuwenden?
Also das auch Normalnutzer in so einen Genuss kommen?

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

31.10.2012, 16:22:31 via Website

DennisG
Gibt es eine Möglichkeit Computer und Android oder sogar Android und Android miteinander zu verbinden die sich beide im Internet aufhalten ohne so (ich sag mal "Fachmännische") Sachen anzuwenden?

Nee...diese "Sachen" sind Standard-Technik :)

B)

if all else fails, read the instructions.

Antworten
DennisG
  • Forum-Beiträge: 35

31.10.2012, 18:21:20 via Website

Klaus T.
DennisG
Gibt es eine Möglichkeit Computer und Android oder sogar Android und Android miteinander zu verbinden die sich beide im Internet aufhalten ohne so (ich sag mal "Fachmännische") Sachen anzuwenden?

Nee...diese "Sachen" sind Standard-Technik :)

B)

Du kannst mir nicht erzählen das man so etwas vorher alles machen muss bevor man Variablen und Daten austauscht?!

Antworten
Christian
  • Forum-Beiträge: 307

31.10.2012, 19:37:55 via Website

Hi DennisG,


RE: Daten auch im Internet übertragen - Gehts mit Socket?
verfasst am 31.10.2012 16:07:43
Richtig, nur wie kann man das umgehen?

Garnicht!

Stell dir vor du möchtest eine Postkarte verschicken. Damit die Karte ankommt benötigst du einen Namen und eine Adresse. Solltest du eins von beiden nicht haben, kann der Postbote die Karte nicht zu stellen.

Die Kommunikation in Computernetzwerken läuft vereinfacht ausgedrückt genauso ab wie der Versand der Postkarte. Du benötigst immer eine genau Adresse nur in diesen Fall ist diese eine Zahlenfolge, die IP.

Dein Problem ist jetzt, das weder dein Smartphone noch dein Computer so eine statische IP besitzen.
Um wieder auf die Postkarte zurück zu kommen, du hast eine Adresse die sich ständig ändert und nun möchtest du eine Nachricht an diese Adresse schicken. Man muss kein Genie sein um festzustellen, das die Karte nie ankommen wird.

Ich hoffe dieses kleine Beispiel verdeutlicht dir warum es keine einfache Lösung gibt und Rafaels Lösung so "kompliziert" aussieht.

Mfg Christian

DennisG

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

31.10.2012, 19:51:54 via App

DennisG
Du kannst mir nicht erzählen das man so etwas vorher alles machen muss bevor man Variablen und Daten austauscht?!

Selbstverständlich ist das so. Was denkst Du denn?

Ausnahme: Der Empfänger hat eine feste IP. Ist das bei Dir so?

Antworten
Simon F.
  • Forum-Beiträge: 1.527

31.10.2012, 21:05:57 via App

Wenn man sich nicht um solche Sachen kümmern will, kann man Daten auch auf einem vorbereiteten Weg übertragen. Wenn man zum Beispiel Mail nutzt vereinfacht das die Adressierung erheblich. Es gibt bzw gab ;-) rundenbasierende Spiele, welche so kommunizieren.

— geändert am 31.10.2012, 21:07:16

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

31.10.2012, 21:23:16 via Website

Klar, es gab auch Schachspieler die schickten sich nach jedem Zug einen Brief.

Wie hier schon geschrieben wurde - das ist Standard und nicht erst seit ein paar Jahren. Jeder dusselige Router kann beim IP-Wechsel DynDNS automatisch aktualisieren - das kostet an Aufwand die einmalige Eingabe eines Domain-Name sowie eines zugehörigen Passworts..

Mehr bedarf es nicht. Man muss dann natürlich noch die eigentliche Problemstellung programmieren - aber die klickt man sich ja ohnehin nur zusammen - kann ja nicht so viel Aufwand sein für die paar Variablen und Daten;-)

Antworten
Simon F.
  • Forum-Beiträge: 1.527

31.10.2012, 23:32:48 via App

Wenn man die App auch veröffentlichen will, möchte man den Anwendern vieleicht die Routerkonfiguration ersparen. Meistens wird dies dann mit einem eigenen Server gelöst, der natürlich auch eingerichtet werden muss, aber eben nicht vom Anwender.
Mail war nur ein Beispiel. Ein anderes ist mir inzwischen eingefallen. Bei Splashtop finden sich die Geräte über den Google Account.
Ich finde solche Gedanken nicht abwegig. Ausserdem sucht der TE doch nach Alternativen.
Edit: Im Mobilnetz wird man um solche Lösungen nicht rum kommen, weil dort die Geräte gar nicht von aussen erreichbar sind.

— geändert am 31.10.2012, 23:37:53

DennisG

Antworten
DennisG
  • Forum-Beiträge: 35

01.11.2012, 15:04:08 via Website

Joa... verstrickt alles :D
Also um das Thema mal wieder hin zu bekommen,
ich versuche einfach nur etwas von meinem Handy an ein anderes Handy oder an meinen Computer über das Internet zu senden.

Mir steht zur Verfügung: Die IP und die Netzwerk IP



1public class ClientThread implements Runnable{
2 private Handler handler=new Handler();
3 Socket socket;
4 InputStream InputStream = null;
5
6 String ip = "192.168.*.***"; // KLAPPT (Netzwerkip Computer)
7 //String ip = "79.**.**.**"; // KLAPPT NICHT (IP gesamt)
8
9 public void run()
10 {
11 try
12 {
13 InetAddress serverAddr=InetAddress.getByName(ip);
14 handler.post(new Runnable(){
15 public void run(){
16
17 }
18 });
19 socket=new Socket(serverAddr, 13111);
20
21 handler.post(new Runnable(){
22 public void run(){
23 try {
24 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
25 out.println("heyho");
26 out.flush();
27
28 String a = readString(socket);
29 out.println("jawoll3" + a);
30
31
32 } catch (IOException e) {
33 // TODO Auto-generated catch block
34 e.printStackTrace();
35 }
36 }
37 });
38
39 }
40 catch(Exception e){
41 handler.post(new Runnable(){
42 public void run(){
43
44 }
45 });
46
47 e.printStackTrace();
48 }
49 }
50 }

So klappt schon mal die Übergabe von Daten im Netzwerk.
Nur das Problem mit den Daten zum Gerät klappt noch nicht.
Kann man den Daten nicht genau sagen, IP -> Gerät IP -> Port ??
Funktioniert sowas nicht? :/

Ach ja, Mobilfunknetze sind mir egal ;) Da diese eh nur Schwierigkeiten bereiten halte ich mich da erstmal raus.

--
Edit:
Hier sieht der Quellcode ja einfach mal Sche... aus :/ Androidpit Formatiert wohl nicht gut.
--

— geändert am 01.11.2012, 15:05:02

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

01.11.2012, 15:11:17 via Website

Also irgendwie fehlt da einfach das Grundlagenwissen zu Netzwerken.

Die IP, die mit 79 beginnt, ist wohl die externe IP, die du am PC angezeigt bekommst, wenn du z.B. http://www.wieistmeineip.de/ aufrufst?

1. ist klar, dass du die nicht erreichen kannst, wenn du dich im Netzwerk HINTER dem Router befindest, denn das ist die IP im Internet
2. Wenn du von außen versuchst diese IP auf Port 13000 irgendwas zu erreichen blockt dein Router das ab. Genau dafür gibt es aber Port-Forwards.
3. Auch in deinem lokalen Netz kann es gut sein, dass die Firewall am PC den Port 13000 blockt. Das musst du auch prüfen und evtl. freischalten.

Also wohl oder übel wirst Du dich mit der Materie einfach mal befassen müssen.
Du kannst dabei nur lernen.

DennisG

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

01.11.2012, 23:32:45 via Website



Rot dargestellte IP-Adressen im linken Bereich, (Heimnetzwerk auf Wlan Basis) können sich gegenseitig sehen bzw. erreichen. Die im rechten Bereich dargestellten roten Adressen (MobileProvider Netzwerke) können sich nicht gegenseitig sehen oder erreichen. Auch nicht die als A & B bezeichneten Devices beim fiktiven Provider O2.

Aus dem Internet kommend, siehst Du immer nur die grün dargestellten Adressen.

Wenn Du eine grün dargestellte Adresse mit einer Portnummer ansprichst, wird es nichts, weil der dortige Router keine Informationen über den weiteren Verlauf der Netzroute hat. Diese hat er erst, wenn die Verbindung von innen eingeleitet wurde, oder es dort eine Portweiterleitung auf der aussenliegenden Verbindungsstelle zum Internet gibt. Das kannst Du beispielsweise in Deinem Heimnetzwerk einrichten (sofern Du Zugriff auf diese Komponente hast), nicht jedoch bei Deinem Mobile-Provider.

— geändert am 01.11.2012, 23:34:47

lg Voss

Antworten
DennisG
  • Forum-Beiträge: 35

02.11.2012, 16:37:15 via Website

Wie machen es den Anwendungen wie zum Beispiel Skype?
Diese müssen ja auch bei Videotelefonie riesen Datenmengen über Sockets verteilen oder?

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

02.11.2012, 17:09:47 via App

DennisG
Wie machen es den Anwendungen wie zum Beispiel Skype?
Diese müssen ja auch bei Videotelefonie riesen Datenmengen über Sockets verteilen oder?

Jau...und die haben auch Leute, die sich mit Netzwerktechnik, Serverfarmen usw, usw...auskennen.

if all else fails, read the instructions.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

02.11.2012, 17:36:55 via Website

DennisG
Wie machen es den Anwendungen wie zum Beispiel Skype?
Diese müssen ja auch bei Videotelefonie riesen Datenmengen über Sockets verteilen oder?

Um jemanden per Skype zu erreichen, muss derjenige Skype gestartet haben, und angemeldet sein. Damit registriert sich das Gerät auf den Servern von Skype und initiert somit eine Verbindung nach außen. Skype kann dann wiederum eine Verbindung mit dem Device herstellen.

Was für Dich möglicherweise interessant wäre .. C2DM -- Cloud to Device Message --

— geändert am 02.11.2012, 17:37:51

lg Voss

Antworten
Markus W.
  • Forum-Beiträge: 27

02.11.2012, 17:43:09 via Website

Klaus T.
DennisG
Wie machen es den Anwendungen wie zum Beispiel Skype?
Diese müssen ja auch bei Videotelefonie riesen Datenmengen über Sockets verteilen oder?

Jau...und die haben auch Leute, die sich mit Netzwerktechnik, Serverfarmen usw, usw...auskennen.

und nicht nur auskennen, sondern die haben auch Server.. die dann die kommunikation zwischen den einzelnen Smartphone-Usern steuern, überwachen, etc..pp.!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

02.11.2012, 21:13:25 via Website

Und vor allem nutzt Skype Eigenheiten der UDP Implementierung in vielen Routern/Firewalls, um eigenmächtig UDP-Ports in Firewalls zu öffnen.
Das haben Leute programmiert, die SEHR tiefes Verständnis von Netzwerktechnologie haben (u.a. Kaazaa Entwickler).

Antworten