客户端程序如下:
package Garfield.Client.Main;import android.app.Activity;
import android.os.Bundle;
import java.io.*;
import java.net.*;public class MainActivity extends Activity
{
    /** 客户端会不停连接服务器 */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        while(true)
        {
            try
            {  
                Thread.sleep(1000);    //为了不过快刷屏,这里休眠了1秒 
                Socket tcpSocket = new Socket();
                tcpSocket.connect(new InetSocketAddress(InetAddress.getByName("192.168.174.128"),30000), 1000);//限时连接
                BufferedInputStream bis =new BufferedInputStream(tcpSocket.getInputStream());
                int s2cType= bis.read(); 
                System.out.println("s2cType="+s2cType);
                ObjectInputStream ois = new ObjectInputStream(tcpSocket.getInputStream());
                int ID = ois.readInt();     //这里阻塞了!!!为什么呢?请高手解答
                System.out.println("ID="+ID);
             }
              catch(Exception e)                               
            {
                System.out.println("没找到服务器");
                //未连接成功之前会一直连接
                continue;                                    
            }
       }
    }
}服务器代码:
package server;import java.io.*;
import java.net.*;public class Server {    public static void main(String[] args) {
        int ID = 0;
       try
       {
           ServerSocket ss = new ServerSocket(30000,0,InetAddress.getByName("192.168.174.128"));
           while(true)
           {                   Socket s = ss.accept();
                try
                {
                    BufferedOutputStream bos = new  BufferedOutputStream(s.getOutputStream());              
                    bos.write(1);
                    bos.flush();                     //将该用户在服务器端ID发送给它,这将成为今后心跳包的标示
                    ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
                    oos.writeInt(ID);
                    oos.flush();                 }
                catch(Exception e)
                {
                    e.printStackTrace();
                }  
       }  
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }  
    }
}
问题用红色标出,很简单的程序,请高手指点