我正在尝试创建一个Java客户端 - 服务器程序,其中服务器在Windows PC上运行,而客户端在Android 2.2手机上运行。
连接没问题。从手机向PC发送数据也很好。 只是在手机上接收数据会导致程序崩溃。
我正在使用DataInputStream和DataOutputStream来读取/写入Socket。
//Thread on the Phone
public void run() {
while (RUN) {
if (socket != null && socket.isConnected()) {
try {
//Crash
String text = dis.readUTF();
myTextView.setText(text);
} catch (IOException ex) {
//ErrorHandling
}
}
}
}
我想从服务器接收一个String,然后在TextView中显示它。 有任何想法吗?我已经设置了此权限:
<uses-permission android:name="android.permission.INTERNET" />
我还需要其他权限吗?感谢。
答案 0 :(得分:0)
我会确保您的数据输入流正确启动:
Socket s = new Socket(serverAddress, port);
DataInputStream dis = new DataInputStream(s.getInputStream());
否则,这里是一个链接,例如代码,其中有人使用InputStreamReader()和OutputStreamWriter()为Android制作服务器和客户端。
答案 1 :(得分:0)
如果您不在UI线程中,则无法在UI上设置文本。
这样做......
添加:
Runnable showmessage = new Runnable() {
public void run() {
myTextView.setText(membervariabletext);
}
};
从你的线程中,在readUTF()之后,调用“runOnUiThread(showmessage);”