Socket Verbindung Galaxy S3 kommt nicht zustande

  • 6 Antworten
  • Neuester Beitrag
Diskutiere Socket Verbindung Galaxy S3 kommt nicht zustande im Android App Entwicklung im Bereich Betriebssysteme & Apps.
S

soundofakira

Neues Mitglied
Hallo zusammen,

ich bin der Andre, 27, Student und schreibe grade an einer kleinen Server/Client Anwendung, bei der ich momentan hänge.

Kurz zum Code

Server
Code:
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
[LEFT]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] port = 8888;
[/LEFT]
ServerSocket Server = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ServerSocket(port);
[/SIZE]
Code:
Client
Code:
[SIZE=2]
[LEFT]String ip = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"192.168.0.107"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]; [/LEFT]
[/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] port = 8888;[/LEFT]
[/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/LEFT]
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]socket[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Socket(ip,port);´[/SIZE]
[SIZE=2]}...
[/SIZE]
Um es kurz zu halten.
Diese beiden Zeilen reichen ja schon zum bereit stellen und Verbinden.
In der Manifest.xml steht folgendes

Code:
[SIZE=2][COLOR=#008080][SIZE=2][COLOR=#008080]
[LEFT]<[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f7f][SIZE=2][COLOR=#3f7f7f]uses-permission[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:name[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"android.permission.INTERNET"[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080][SIZE=2][COLOR=#008080]/>[/LEFT]
<[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f7f][SIZE=2][COLOR=#3f7f7f]uses-permission[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#7f007f][SIZE=2][COLOR=#7f007f]android:name[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]=[/SIZE][I][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"android.permission.ACCESS_NETWORK_STATE"[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#008080][SIZE=2][COLOR=#008080]/>
[/COLOR][/SIZE][/COLOR][/SIZE]
Auf dem Galaxy S3 läuft:
Android 4.1.1

Ich habe auf diversen anderen Geräten die App laufen gehabt und die Verbindung hat geklappt.
Starte ich auf meinem Galaxy die App und will die Verbindung starten, kommt es zu folgender Fehlermeldung

Code:
12-17 20:50:55.915: E/AndroidRuntime(17911): FATAL EXCEPTION: main
12-17 20:50:55.915: E/AndroidRuntime(17911): java.lang.IllegalStateException: Could not execute method of the activity
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.view.View$1.onClick(View.java:3691)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.view.View.performClick(View.java:4211)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.view.View$PerformClick.run(View.java:17267)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.os.Handler.handleCallback(Handler.java:615)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.os.Looper.loop(Looper.java:137)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.app.ActivityThread.main(ActivityThread.java:4898)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.lang.reflect.Method.invokeNative(Native Method)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.lang.reflect.Method.invoke(Method.java:511)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at dalvik.system.NativeStart.main(Native Method)
12-17 20:50:55.915: E/AndroidRuntime(17911): Caused by: java.lang.reflect.InvocationTargetException
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.lang.reflect.Method.invokeNative(Native Method)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.lang.reflect.Method.invoke(Method.java:511)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.view.View$1.onClick(View.java:3686)
12-17 20:50:55.915: E/AndroidRuntime(17911):  ... 11 more
12-17 20:50:55.915: E/AndroidRuntime(17911): Caused by: android.os.NetworkOnMainThreadException
12-17 20:50:55.915: E/AndroidRuntime(17911):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at libcore.io.IoBridge.connect(IoBridge.java:112)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.Socket.startupSocket(Socket.java:566)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.Socket.tryAllAddresses(Socket.java:127)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.Socket.<init>(Socket.java:177)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at java.net.Socket.<init>(Socket.java:149)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at com.example.client.MainActivity.send(MainActivity.java:96)
12-17 20:50:55.915: E/AndroidRuntime(17911):  at com.example.client.MainActivity.enc(MainActivity.java:62)
12-17 20:50:55.915: E/AndroidRuntime(17911):  ... 14 more

Es ist dann beim Server genau diese Zeile, bei der es zu dem Fehler kommt
Code:
[SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]socket[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Socket(ip,port);´[/SIZE]
Allerdings nur bei dem S3.
Ich hatte es vorhin mit 2 anderen Android Handy und einem Tablet probiert, die allerdings nicht mir gehören.
Wenn ich die IP:port im Browser anspreche, registriert der Server der Zugriff.

Nur aus der APP raus klappt das einfach nicht.
Neu start des Gerätes habe ich schon mal probiert.

Hat jemand eine Idee, was da das Problem sein könnte?

gruß
Andre
 
S

swordi

Lexikon
genau diese exception ist alleine hier im forum in den letzten 3 wochen wohl einige male aufgetaucht.

es ist doch ein leichtes, genau nach der exception mal bei google zu suchen. ich bin mir sicher da findest mind 10 einträge die perfekt passen und dir sagen, was das problem ist.
 
S

soundofakira

Neues Mitglied
Wenn mir google weiter geholfe hätte, dann hätte ich mich hier nicht angemeldet um zu fragen..
 
blackfire185

blackfire185

Stammgast
Baust du die Verbindung im ui thread auf oder in einer async Task. Ab android 3.0 kann man keine internetverbindung im ui thread aufbauen

Gesendet von meinem GT-S5660 mit der Android-Hilfe.de App
 
S

soundofakira

Neues Mitglied
blackfire185 schrieb:
Baust du die Verbindung im ui thread auf oder in einer async Task. Ab android 3.0 kann man keine internetverbindung im ui thread aufbauen

Gesendet von meinem GT-S5660 mit der Android-Hilfe.de App
Also istAsync mein KeyWord?

Alles klaro..
Dann schaue ich mir das mal an.

Danke für den Hinweis :)
 
S

swordi

Lexikon
wenn du unter
"NetworkOnMainThreadException" bei google nichts findest, machst leider was falsch.
 
S

soundofakira

Neues Mitglied
Hallo
Komme leider jetzt erst dazu mich zu melden..
Irgend was mache ich noch falsch..

Code:
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
[LEFT]package[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] com.example.client;
[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]import[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] java.io.IOException;[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]import[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] java.net.Socket;[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]import[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] java.net.SocketAddress;[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]import[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] java.net.UnknownHostException;
[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]import[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] android.os.AsyncTask;
[/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][LEFT]public[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]class[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Async [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]extends[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] AsyncTask<String, Void, Void>
{
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Socket [/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]socket[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]port[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = 8888;

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]protected[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Void doInBackground(SocketAddress... params) {
System.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]out[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].println([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Im Background"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
System.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]out[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].print(params[0]);
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]socket[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Socket();
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]socket[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].connect(params[0],[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]port[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);

} [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (UnknownHostException e) {
System.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]out[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].println([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Host nicht gefunden"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
} [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (IOException e) {
[/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f9fbf][SIZE=2][COLOR=#7f9fbf]TODO[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f] Auto-generated catch block[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]System.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]out[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].println([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Was anderes stimmt nicht"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}

[/SIZE][SIZE=2][COLOR=#646464][SIZE=2][COLOR=#646464]@Override[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]protected[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Void doInBackground(String... params) {
[/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f9fbf][SIZE=2][COLOR=#7f9fbf]TODO[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f] Auto-generated method stub[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}

}
[/LEFT]
[/SIZE]
Code:
[SIZE=2]
[LEFT]Async a = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Async();[/LEFT]
a.execute([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"192.168.0.101"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE]
01-06 22:42:23.830: E/AndroidRuntime(20866): FATAL EXCEPTION: main
01-06 22:42:23.830: E/AndroidRuntime(20866): java.lang.IllegalStateException: Could not execute method of the activity


Kann mir jemand sagen, was genau ich da falsch mache? :)

Der ursprüngliche Beitrag 06.01.2013 von 22:56 Uhr wurde 07.01.2013 um 00:09 Uhr ergänzt:

Hallo..

Ihr dürft mich flamen.. :D

So geht es
Code:
public void  test(View view) throws IOException
	 { 
		 System.out.println("Button press");
		 Async a = new Async();
		 a.execute();
		
	  }
Code:
package com.example.client;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;

import android.os.AsyncTask;

public class Async extends AsyncTask<String, Void, Void>
{
	public Socket socket;
	public PrintWriter printWriter;
	int port = 8888;
	SocketAddress a;
	
	protected Void doInBackground(String... params) {
		
		System.out.println("Im Background");
		a = new InetSocketAddress("192.168.0.101",8888);
		System.out.println("SocketFehler");
		
		socket = new Socket();
		
		try {
			socket.connect(a);
		} 
		catch (IOException e) {
			System.out.println("No Connection");
		}
		
		String Nachricht = "-dO>ŸÉ¿u£øq°ÈԂW¤";
		
		System.out.println("PrintStart");
		
		try {
			printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		printWriter.print(Nachricht);
		printWriter.flush();

	
return null;
	}	
}
Ich hatte bei der Fehlersuche nicht bedacht, dass natürlich jetzt der andere Thread auch arbeitet... und der Verweis auf die Sockerverbindung aus dem MainThread hat dann eine NULLPointerExeption geworfen..

Logische Sache, wenn er da nicht zugreifen darf eigentlich :D
 
Ähnliche Themen - Socket Verbindung Galaxy S3 kommt nicht zustande Antworten Datum
5
0