【发布时间】:2016-03-26 10:24:41
【问题描述】:
在我的 android 应用程序中,我正在创建一个 Socket 和一个 BufferedReader。如果我只读取 BufferedReader 的一行,我会收到来自服务器的响应。但是如果我用while((message = br.readLine()) != null) 尝试它,应用程序就会崩溃。任何想法可能是什么问题?
代码
public void connecting(String uid) {
uuid = uid;
try {
client = new Socket("127.0.0.1", 8234);
try {
tv = (TextView) chat.findViewById(R.id.textView);
pw = new PrintWriter(client.getOutputStream());
br = new BufferedReader(new InputStreamReader(client.getInputStream()));
new Thread(new Runnable() {
@Override
public void run() {
try {
// If i just try this, it works
tv.append("\n"+br.readLine());
// If I'm trying this, it crashes
String message = "";
while((message = br.readLine()) != null) {
tv.append("\n"+message);
}
} catch (IOException e) {
tv.append(e.getMessage());
}
}
}).start();
tv.append("Connected!");
pw.println(uuid+":B31TR1TT");
pw.flush();
} catch (IOException e) {
tv.append(e.getMessage());
}
} catch (IOException e) {
tv.append(e.getMessage());
}
}
【问题讨论】:
-
你能贴出你的代码吗
-
发布错误信息或logcat
-
解决 StrictMode 所抱怨的问题而不是禁用 StrictMode 似乎是一个更好的主意。
-
你在主线程上调用
connecting吗?如果是这样,您可能应该确保您不这样做。de.Timpa.mCyber.Check.connect是什么?它列在您的堆栈跟踪中,但我在您的问题中没有看到它的代码。 -
你应该把你的网络操作放在一个单独的线程中,而不是在 ui 线程中。也许这就是您收到错误的原因。
标签: java android sockets bufferedreader