android开发实例-socket(二)

客户端可以向服务器端发送消息。

服务器端部分代码:

public void getServer() {
        try {
            server = new ServerSocket(1978); // 实例化Socket对象
           
            ta_info.append("服务器套接字已经创建成功\n"); // 输出信息
            while (true) { // 如果套接字是连接状态
                ta_info.append("等待客户机的连接......\n"); // 输出信息
                socket = server.accept(); // 实例化Socket对象
                ta_info.append("连接成功。\n"); // 输出信息
                reader = new BufferedReader(new InputStreamReader(socket
                        .getInputStream())); // 实例化BufferedReader对象
                getClientInfo(); // 调用getClientInfo()方法
            }
        } catch (Exception e) {
            e.printStackTrace(); // 输出异常信息
        }
    }
   
    private void getClientInfo() {
        try {
            while (true) { // 如果套接字是连接状态
                ta_info.append("接收到客户机发送的信息:" + reader.readLine() + "\n"); // 获得客户端信息
            }
        } catch (Exception e) {
            ta_info.append("客户端已退出。\n"); // 输出异常信息
        } finally {
            try {
                if (reader != null) {
                    reader.close();// 关闭流
                }
                if (socket != null) {
                    socket.close(); // 关闭套接字
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

 

安卓客户端部分代码:

 1 Handler handler=new Handler();
 2 handler.post(socketThread);
 3         btn.setOnClickListener(new OnClickListener() {
 4             
 5             public void onClick(View v) {
 6                pt.println(et.getText());
 7                 et.setText("");
 8                  
 9             }
10         });
11        
12     }
13 
14     Runnable socketThread = new Runnable() {
15         public void run() {
16             
17 try {
18                  
19           socket=new Socket("192.168.1.100",1978);
20              socket.getOutputStream();
21              pt=new PrintWriter(socket.getOutputStream(),true);
22              
23 Toast.makeText(MainActivity.this, "ok", 3000).show();
24 }  catch (Exception e) {
25                     
26 // TODO Auto-generated catch block
27                     e.printStackTrace();
28                 
29 }
30         }
31     };

 

 

 

posted @ 2013-05-06 10:11  wisimer  阅读(171)  评论(0编辑  收藏  举报