Socket通讯消息接收问题 socketgetDatagetByteArray 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你看一段示例代码public class MainActivity extends Activity { private Handler handler; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); handler = new Handler() { @Override public void handleMessage(Message msg) { byte[] response = msg.getData().getByteArray("response"); textView.setText(new String(response)); } }; new AsyncTask<Void, Void, Void>() { @Override public Void doInBackground(Void... params) { byte[] response = getContentFromServer(); if (response != null) { Message msg = handler.obtainMessage(); Bundle bundle = new Bundle(); bundle.putByteArray("response", response); msg.setData(bundle); msg.sendToTarget(); } return null; } }.execute(); } public byte[] getContentFromServer() { byte[] buffer = new byte[4096]; Socket socket = null; try { socket = new Socket("192.168.1.101", 8080); InputStream in = socket.getInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); while (true) { int size = in.read(buffer); if (size <= 0) break; out.write(buffer, 0, size); } return out.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }} 上面这段代码的作用是在UI线程中启动一个子线程从服务器接收数据,然后通过给Handler发消息的方式,由Handler的处理函数把数据显示在界面上。 注意在AndroidManifest.xml中不要忘记添加权限<uses-permission android:name="android.permission.INTERNET" /> 屏幕点击事件求解 我适合走此路吗?谢谢各位好汉 Android 贪吃蛇 eclipse 源代码 android如何做带有图片的单选弹出框,如图 如何获取手机的重力感应数据 急!帮忙看看为什么我用shell编译的apk不将drawable-ldpi打包进去 关于Android开发问题 android 定位问题 求助!NDK错误 关于canvas画2D图形的问题 关于同时包含file和JSON的POST方法 2048中每个数字的滑动效果如何实现
private Handler handler;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
byte[] response = msg.getData().getByteArray("response");
textView.setText(new String(response));
}
};
new AsyncTask<Void, Void, Void>() {
@Override
public Void doInBackground(Void... params) {
byte[] response = getContentFromServer();
if (response != null) {
Message msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putByteArray("response", response);
msg.setData(bundle);
msg.sendToTarget();
}
return null;
}
}.execute();
}
public byte[] getContentFromServer() {
byte[] buffer = new byte[4096];
Socket socket = null;
try {
socket = new Socket("192.168.1.101", 8080);
InputStream in = socket.getInputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (true) {
int size = in.read(buffer);
if (size <= 0)
break;
out.write(buffer, 0, size);
}
return out.toByteArray();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (socket != null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}