java Android 2.2 readUTF()socket问题
我正在尝试创建一个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
}
}
}
}
我想从服务器接收一个字符串,然后在文本视图中显示它。 有什么想法吗?我已经设置了此权限:
<uses-permission 安卓:name="安卓.permission.INTERNET" />
我还需要其他权限吗?谢谢
# 1 楼答案
我将确保正确启动您的数据输入流:
Socket s = new Socket(serverAddress, port); DataInputStream dis = new DataInputStream(s.getInputStream());
否则,这里有一个链接,例如有人使用InputStreamReader()和OutputStreamWriter()为Android创建服务器和客户端的代码
https://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/
# 2 楼答案
如果不在UI线程中,则无法在UI上设置文本
做这个
加上:
Runnable showmessage = new Runnable() { public void run() { myTextView.setText(membervariabletext); } };
在readUTF()之后,从线程中调用“runOnUiThread(showmessage);”