解决方案 »

  1.   

    给你看一段示例代码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;
    }
    }
      

  2.   

    上面这段代码的作用是在UI线程中启动一个子线程从服务器接收数据,然后通过给Handler发消息的方式,由Handler的处理函数把数据显示在界面上。
      

  3.   

    注意在AndroidManifest.xml中不要忘记添加权限<uses-permission android:name="android.permission.INTERNET" />