package androidclient.test;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class AndroidClient_Activity extends Activity implements Runnable{ private android.widget.ImageView image;// 用于显示接收到的图片的ImageView对象
private java.net.Socket sc;
private ObjectInputStream fromServer;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_client_);
try {
 sc = new Socket(InetAddress.getByName("192.168.1.100"),2024);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 启动读取套接字中数据并进行处理的线程 
new Thread(this).start();// 本类继承了Runnable接口,所以创建线程时将本类的对象传入即可 

} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_android_client_, menu);
return true;
} /** 
* 由于输入流的read方法会阻塞,为了避免它影响主界面的其他数据处理, 启动一个线程来读取输入流中的数据,并对数据进行相应的处理 
*/ 
@Override
public void run() {
// TODO Auto-generated method stub
try{
// 获得界面显示图片的ImageView对象 
image = (android.widget.ImageView) findViewById(R.id.image); 
// 获得套接字的输入流并包装成基本数据输入流 
java.io.DataInputStream din = new java.io.DataInputStream(sc 
.getInputStream()); 

// 不断监听输入流的数据情况 
while (true) { 
// 当流中有数据时,读取数据并进行处理 
if (din.available() > 0) { 

// 创建data数组并将流中数据读取到数组中 
byte[] data = new byte[din.readInt()];// 注此处同样没有处理图片大小超过int的范围的情况 
din.read(data); 

// 根据读到的文件数据创建Bitmap对象bitmap,因为将要在后面的内部类中使用bitmap,所以定义为 
// final型 
final android.graphics.Bitmap bitmap = android.graphics.BitmapFactory 
.decodeByteArray(data, 0, data.length); 

// 将图片显示到ImageView上 
// 此处由于view中的组件都是线程不安全的,使用android提供的这个办法处理(详见下文“附2”) 
image.post(new Runnable() { 

public void run() { 
// 将bitmap显示到界面上 
image.setImageBitmap(bitmap); 

}); 


// 线程休息1s 
Thread.sleep(1000); 




} catch (Exception e) { 
e.printStackTrace(); 


}}有两个问题想要请教大家:
1       // 创建data数组并将流中数据读取到数组中 
byte[] data = new byte[din.readInt()];// 注此处同样没有处理图片大小超过int的范围的情况
这里怎样解决图片大的问题,几百K的图片就不行了……只能几十K的图片……
2      我想要同时传文本和图片让手机接收显示, 但我不知怎么判断Socket输出流让图片和文本分开;
       望各位大神指导我一下androidsocket