感谢您花时间阅读我的问题。在Android应用程序中从Java SocketServer接收字符串
我目前正在研究我的第一个Android应用程序。我试图从我的Java SocketServer发送一个字符串,该字符串在VPS上不断运行到android应用程序。当我在Eclipse中编写10行客户端时,它完美地工作。我现在的问题是如何在Android中获得响应,因为我得到的错误如“你不能在主线程中使用套接字”,但我想要编写它的方式是用一个方法将响应作为字符串返回。
也许我应该补充说我的服务器respsonds没有输入/字符串提供。我只想打开连接并从输入流读取字符串。
我的服务器代码,我送:
try {
OutputStream out = socket.getOutputStream();
PrintWriter pw = new PrintWriter(out);
String toSend = "";
//This is just some serialization of own Elements to a string.
boolean first = true;
for (VertretungsPlanElement ele : Main.Elemente) {
if (!first) {
toSend = toSend + "~";
}
first = false;
toSend = toSend + ele.toString();
}
//Serialization ends
pw.println(toSend);
pw.flush();
pw.close();
out.flush();
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
这种方法,当我试图从我的非Android客户端的响应作品,但它给了我空或“”当我试图得到它Android系统。
我的Android代码:
try {
client = new Socket(hostname, port);
BufferedReader is = new BufferedReader(new InputStreamReader(client.getInputStream()));
response = is.readLine();
Vertretungsplan.Cards.add(new VertretungsplanCard("Response:", response));
} catch (Exception e) {}
我现在做了差不多研究了一天我读到一些关于“AsynchronousTasks”什么的。
如果此问题已被要求,我很抱歉。
感谢您的时间和您的帮助!
“错误,如“你不能在主线程中使用套接字”。事实上,你不能。你做了什么来解决这个问题? – greenapps
非常草率被问到的问题。如果你阅读过去的流结束,它会给你null,如果你发送了一个空行,它会给你“”,如果不能同时给你两个这样的东西,从你接受的答案中可以清楚的知道你我真的得到了一个异常,这与null或“无关”。*从不*忽略IOExceptions。'异步任务'或某事'同样马虎。 – EJP
我试图使用新的线程().start() ; w ith一个Runnable,但它当然不起作用,因为在runnable中获得的字符串我不能做太多。对不起,如果你认为我的问题是“马虎”。我试着在下一次更好地问它。 –