一个简单的功能:接收服务器发过来的的信息;发送给服务器信息。
现在可以发送给服务器,却接收不到服务器发送过来的信息,却总是接收到自己发送出去的信息!
代码如下:
public class AndroidObjectClientActivity extends Activity  
{  
    private final String        DEBUG_TAG   = "Activity01";       
    private TextView    mTextView = null;  
    private EditText    mEditText = null;  
    private Button      mButton = null;  
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);            
        mButton =(Button)findViewById(R.id.Button01);  
        mTextView = (TextView)findViewById(R.id.TextView01);  
        mEditText = (EditText)findViewById(R.id.EditText01);                          
        //登陆  
      mButton.setOnClickListener(new OnClickListener()  
        {  
            public void onClick(View v)  
            {  
                Socket socket;  
                String message = mEditText.getText().toString();   
                SimpleDateFormat formater = new SimpleDateFormat("HH:mm:ss");
             String time =formater.format(new Date());
             String sendStr ="(" +time+")"+":"+message;
                try   
                {     
                    //创建Socket   
                    socket = new Socket("192.168.60.17",6666); 
                    System.out.println("Connected to " + socket.getRemoteSocketAddress());   
                    //向服务器发送消息  
                    PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));        
                    out.println(sendStr);
                    out.flush();  
                    mEditText.setText("");
                    
                    //接收来自服务器的消息                     
                    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));   
                    String msg = br.readLine();                         
                    mTextView.setText(msg);  

                    out.close();  //关闭流  
                    br.close();    //关闭流                  
                    socket.close();   //关闭Socket  
                }   catch (Exception e)    {   Log.e(DEBUG_TAG, e.toString());   }  
            }  
        }); 
}  
}  

解决方案 »

  1.   

    已经建立Socket,服务器可以接收到客户端发送的信息,只是,服务器发送的客户端接收不到。
    我查资料得到需要在客户端重新开启一个线程来专门做接收工作,可是,我不太懂线程的建立
      

  2.   

    问题还没有解决,数据库还没有连接成功。
    public class ObjectServer   
    {
        private static List<Socket> sockets = new ArrayList<Socket>();
        String str = null;
        public ObjectServer() throws ClassNotFoundException
        {            
         this.init();     
        }
      //把某个客户端(管理员)发送过来的数据转发给所有的客户端
    class ServerRunner implements Runnable 
    {
             private List<Socket> sockets;
             private Socket currentSocket;
             public ServerRunner(List<Socket> sockets,Socket currentSocket)
             {
              this.sockets = sockets;
              this.currentSocket = currentSocket;
             }
    //@Override
    public void run() {
    String ip = currentSocket.getInetAddress().getHostAddress();
    BufferedReader br = null ;
    try{
    br = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
    //String str = null;
    while((str = br.readLine()) != null)
    {
    System.out.println(ip +  str);
    for(Socket temp : sockets)
    {
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(temp.getOutputStream()));
    pw.println(str);
    pw.flush();
    }
    }
    }catch(IOException e){e.printStackTrace();}
    }
    }
        //连接数据库
        public void db(String str ) throws SQLException,ClassNotFoundException
        {          
         Connection con = null;
         String Name;
         char[] Pwd;
         try{
                    //连接数据库     
                           Class.forName("com.mysql.jdbc.Driver");
                    con = DriverManager.getConnection("jdbc:mysql://localhost/sms", "root", "");     
                    System.out.println("数据库连接成功!");    
                    Statement s=con.createStatement(); 
                           String sql = " select pwd from user where name=Name ";
                           ResultSet rs=s.executeQuery(sql);
                           boolean tof=false;                           
         }catch(Exception e){e.printStackTrace();}
         finally{
         try{
         if (con != null) con.close();
         }catch(Exception e){e.printStackTrace();}
         }
      }
    //启动监听
    public void init() throws ClassNotFoundException
        {
    ServerSocket serverSocket;
        try
            {
                     serverSocket = new ServerSocket(6666);
                     while(true)
                     {
                               Socket clientSocket = serverSocket.accept();                                                           
                               sockets.add(clientSocket);
                               Thread thread = new Thread(new ServerRunner(sockets,clientSocket));
                               thread.start();                                                                         
                     }
            }catch(IOException ioe){ ioe.printStackTrace();} 
        try {
           this.db(str);
          } catch (SQLException e) {e.printStackTrace();} 
        }

    public static void main(String[] args)
    {
    try{
    new ObjectServer();
    } catch (ClassNotFoundException e) {e.printStackTrace();}
    }
    }