Keine Verbindung mit Socket

  • Antworten:7
arbengie
  • Forum-Beiträge: 8

20.01.2013, 22:01:20 via Website

Hallo zusammen,
ich muss mich mal wieder an Euch wenden mit folgendem Problem:
Ich kriege einfach keine TCP / Socket Verbindung zum Server hin.
Beim createn des Sockets bekomm ich immer eine IOException, was laut Dokumentation heißt, dass ein Fehler beim Erstellen des Sockets auftritt.
Ich habe die INTERNER-Permission in der manifest.xml gesetzt, WLAN ist auch an, und das Server Programm läuft auch.

Hoffentlich kann mir jmd. helfen... :vader:

1public class MainActivity extends Activity {
2
3 private Socket client;
4 private Thread thread;
5 private EditText chat, input;
6
7 @Override
8 protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.activity_main);
11 input = (EditText) findViewById(R.id.input);
12 chat = (EditText) findViewById(R.id.chat);
13 new MainActivity();
14 }
15
16 public MainActivity() {
17 thread = new Thread(new Runnable() {
18 @Override
19 public void run() {
20 try {
21 client = new Socket("127.0.0.1", 9999);
22 }
23 catch (UnknownHostException e) {
24 Log.d("Fehler", "UnknownHostException");
25 }
26 catch (IOException e) {
27 Log.d("Fehler", "IOException");
28 }
29 if (client == null)
30 Log.d("Fehler", "Keine Verbindung.");
31 else
32 Log.d("Ok", "Verbindung erfolgreich");
33 }
34 });
35 thread.start();
36 }

Meine gesendeten Log Nachrichten:
1Fehler IOException
2Fehler Keine Verbindung.
3Fehler IOException
4Fehler Keine Verbindung.

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

20.01.2013, 22:11:25 via Website

Hallo,

so wirst Du keine Verbindung aufbauen können. Du musst schon die IP Adresse des Servers angeben und nicht die "lokale" Adresse Deines Smartphones. 127.0.0.1 ist die lokale localhost Adresse Deines Smartphones.

Du wirst ja vom Smartphone nicht eine Verbindung zu sich selber aufbauen wollen oder?

lg Voss

Antworten
arbengie
  • Forum-Beiträge: 8

21.01.2013, 09:52:31 via Website

Der Server läuft ja auf meinem PC und somit im lokalen Netzwerk.
127.0.0.1 entspricht doch localhost, oder etwa doch nicht?

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

21.01.2013, 12:40:46 via Website

Aufgrund der Tatsache, das der Thread Owner schrieb : "Wlan ist auch an" gehe ich davon aus, dass er die Client Anwendung auf einem realen Device laufen lässt und nicht im Emulator auf dem lokalen PC.

Für ein reales Smartphone, welches lediglich Member des gleichen Wlan Netzwerksegments ist, wäre die Angabe 127.0.0.1 verkehrt ... Anstelle dessen müsste hier die im Wlan verwendete IP-Adresse des den Server beherbergenden PCs verwendet werden.

127.0.0.1 ist eine sogenannte Loopback Adresse bei der Ziel und Quelle das selbe sind. Die DNS Bezeichnung für dieses Loopback interface ist normalerweise localhost.

lg Voss

Antworten
arbengie
  • Forum-Beiträge: 8

21.01.2013, 18:20:10 via Website

Wie schon erwähnt, die App teste ich auf nem Galaxy S2 und das Server Programm rennt auf Windows 7 und wurde in "reinem" Java geschrieben.
Und new Socket("localhost", 9999) klappt ebenfalls nicht :-/

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

21.01.2013, 18:24:56 via Website

arbengie
Wie schon erwähnt, die App teste ich auf nem Galaxy S2 und das Server Programm rennt auf Windows 7 und wurde in "reinem" Java geschrieben.
Und new Socket("localhost", 9999) klappt ebenfalls nicht :-/

Ja wie denn auch .. ich hab es doch erklärt .. So wie Du es machst, kann es nicht funktionieren. Da würde Dein S2 versuchen eine Verbindung zu sich selber auf Port 9999 aufzubauen. Und Du wirst am S2 keinen Service laufen haben, der auf Port 9999 lauscht.

Du musst new Socket("ipadresse_Deines_Servers", 9999) verwenden um eine Verbindung vom S2 zum Windows7 Rechner aufzubauen ...

lg Voss

Antworten
arbengie
  • Forum-Beiträge: 8

21.01.2013, 19:03:57 via Website

Es war ne schwere Geburt aber ich habs geschafft.
Auf dem Rechner ipconfig gemacht und einfach die IPv4 Adresse genommen.#

Danke Euch! :-)

Antworten