D
didisoft
Neues Mitglied
- 0
Hallöle!
Ich möchte eine kleine Chat-App programmieren, die ich zunächst als "normales" Java-Programm geschrieben habe. Da hat auch alles funktioniert. Nun möchte ich das ganze auf Android übertragen, und, bevor ich einen Server miete, auf dem Emulator testen.
Nach einigen Google-Versuchen habe ich festgestellt, dass man als IP (bei new Socket("IP", Port)) 10.0.2.2 eingeben muss, um auf den localhost des "Entwicklungs-PCs" zuzugreifen. Den Server (oder eben den ServerSocket) habe ich als Java Konsolen-Programm geschrieben und auf meinem PC laufen.
So, nun spuckt unsere Log-Kitty ne schöne Exception aus, und ich kann nicht mit dem Server kommunizieren:
Die Zeile "Der Client ist null!!" ist nur um zu sehen ob der Client, den ich erstelle, null ist.
Wenn ihr da durchseht würde ich mich freuen
Und wie hoste ich den selbstprogrammierten "Server" dann eigentlich? Ich möchte ihn nur ungern auf dem eigenen Laptop als Homeserver laufen lassen vServer? Hat jemand schon Erfahrung damit?
Und als IP muss ich ja dann nur noch die IP des Servers eingeben, oder?
Ok, also, wenn ihr eine Idee habt, was falsch sein könnte, würde ich mich freuen.
Hier nochmal ein wenig code: (Kann man den auch besser/übersichtlicher posten?!)
die OnCreate() Methode und der Teil, bei dem ich den Socket erstelle:
Ach ja, und die Permission für das Internet habe ich.
Falls ihr mehr code braucht sagt bescheid
Vielen Dank im Vorraus!
LG, David
Ich möchte eine kleine Chat-App programmieren, die ich zunächst als "normales" Java-Programm geschrieben habe. Da hat auch alles funktioniert. Nun möchte ich das ganze auf Android übertragen, und, bevor ich einen Server miete, auf dem Emulator testen.
Nach einigen Google-Versuchen habe ich festgestellt, dass man als IP (bei new Socket("IP", Port)) 10.0.2.2 eingeben muss, um auf den localhost des "Entwicklungs-PCs" zuzugreifen. Den Server (oder eben den ServerSocket) habe ich als Java Konsolen-Programm geschrieben und auf meinem PC laufen.
So, nun spuckt unsere Log-Kitty ne schöne Exception aus, und ich kann nicht mit dem Server kommunizieren:
Code:
03-24 19:49:39.763: W/TextLayoutCache(1415): computeValuesWithHarfbuzz -- need to force to single run
03-24 19:49:39.771: W/TextLayoutCache(1415): computeValuesWithHarfbuzz -- need to force to single run
03-24 20:30:24.691: I/System.out(1415): Der client ist null!!!!!
03-24 20:30:24.691: W/System.err(1415): android.os.NetworkOnMainThreadException
03-24 20:30:24.701: W/System.err(1415): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
03-24 20:30:24.711: W/System.err(1415): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:74)
03-24 20:30:24.711: W/System.err(1415): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
03-24 20:30:24.711: W/System.err(1415): at libcore.io.IoBridge.connect(IoBridge.java:112)
03-24 20:30:24.711: W/System.err(1415): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
03-24 20:30:24.711: W/System.err(1415): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
03-24 20:30:24.711: W/System.err(1415): at java.net.Socket.startupSocket(Socket.java:566)
03-24 20:30:24.711: W/System.err(1415): at java.net.Socket.tryAllAddresses(Socket.java:127)
03-24 20:30:24.711: W/System.err(1415): at java.net.Socket.<init>(Socket.java:177)
03-24 20:30:24.721: W/System.err(1415): at java.net.Socket.<init>(Socket.java:149)
03-24 20:30:24.721: W/System.err(1415): at de.didisoft.hausaufgaben.ChatActivity.connectToServer(ChatActivity.java:51)
03-24 20:30:24.721: W/System.err(1415): at de.didisoft.hausaufgaben.ChatActivity.onCreate(ChatActivity.java:42)
03-24 20:30:24.731: W/System.err(1415): at android.app.Activity.performCreate(Activity.java:4465)
03-24 20:30:24.731: W/System.err(1415): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-24 20:30:24.731: W/System.err(1415): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
03-24 20:30:24.743: W/System.err(1415): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
03-24 20:30:24.751: W/System.err(1415): at android.app.ActivityThread.access$600(ActivityThread.java:122)
03-24 20:30:24.751: W/System.err(1415): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
03-24 20:30:24.761: W/System.err(1415): at android.os.Handler.dispatchMessage(Handler.java:99)
03-24 20:30:24.761: W/System.err(1415): at android.os.Looper.loop(Looper.java:137)
03-24 20:30:24.761: W/System.err(1415): at android.app.ActivityThread.main(ActivityThread.java:4340)
03-24 20:30:24.761: W/System.err(1415): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 20:30:24.761: W/System.err(1415): at java.lang.reflect.Method.invoke(Method.java:511)
03-24 20:30:24.771: W/System.err(1415): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-24 20:30:24.771: W/System.err(1415): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-24 20:30:24.771: W/System.err(1415): at dalvik.system.NativeStart.main(Native Method)
Die Zeile "Der Client ist null!!" ist nur um zu sehen ob der Client, den ich erstelle, null ist.
Wenn ihr da durchseht würde ich mich freuen
Und wie hoste ich den selbstprogrammierten "Server" dann eigentlich? Ich möchte ihn nur ungern auf dem eigenen Laptop als Homeserver laufen lassen vServer? Hat jemand schon Erfahrung damit?
Und als IP muss ich ja dann nur noch die IP des Servers eingeben, oder?
Ok, also, wenn ihr eine Idee habt, was falsch sein könnte, würde ich mich freuen.
Hier nochmal ein wenig code: (Kann man den auch besser/übersichtlicher posten?!)
die OnCreate() Methode und der Teil, bei dem ich den Socket erstelle:
Code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chat);
messages = (TextView) findViewById(R.id.tvMessages);
etMsg = (EditText) findViewById(R.id.etMessage);
findViewById(R.id.bChatMenu).setOnClickListener(this);
findViewById(R.id.bChatSend).setOnClickListener(this);
if (connectToServer())
new Thread(new MessagesFromServerListener()).start();
}
public boolean connectToServer() {
try {
client = new Socket("10.0.2.2", 6655);
reader = new BufferedReader(new InputStreamReader(
client.getInputStream()));
writer = new PrintWriter(client.getOutputStream());
addLine("Netzwerkverbindung hergestellt!");
return true;
} catch (Exception e) {
addLine("Netzwerkverbindung konnte nicht hergestellt werden!");
if (client == null) System.out.println("Der client ist null!!!!!");
e.printStackTrace();
return false;
}
}
Ach ja, und die Permission für das Internet habe ich.
Falls ihr mehr code braucht sagt bescheid
Vielen Dank im Vorraus!
LG, David
Zuletzt bearbeitet: