加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

android 利用socket 发送Json数据demo

发布时间:2020-12-14 23:25:36 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package com.yqq.jsonclienttest; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    package com.yqq.jsonclienttest;  
      
    import java.io.IOException;  
    import java.io.OutputStream;  
    import java.net.InetAddress;  
    import java.net.Socket;  
    import java.net.UnknownHostException;  
      
    import org.json.JSONException;  
    import org.json.JSONObject;  
      
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.text.TextUtils;  
    import android.util.Log;  
    import android.view.View;  
    import android.widget.EditText;  
    import android.widget.Toast;  
      
      
      
    /** 
     * 套接字客户端, 
     * 1、先生成JSON对象 
     * 2、将JSON对象转成JSON字符串 
     * 3、将JSON字符串转成字节数组写入套接字输出流 
     * @author yqq_coder 
     * 
     */  
    public class MainActivity extends Activity {  
        private EditText et_name;  
        private EditText et_age;  
        private EditText et_sex;  
        private String host="172.21.133.15";//同一个局域网内作为服务端的手机的IP,使用端口8155  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            et_name=(EditText) findViewById(R.id.et_name);  
            et_age=(EditText) findViewById(R.id.et_age);  
            et_sex=(EditText) findViewById(R.id.et_sex);  
        }  
          
          
        public void submit(View v) throws JSONException{  
            if(TextUtils.isEmpty(et_name.getText().toString().trim())||TextUtils.isEmpty(et_age.getText().toString().trim())||TextUtils.isEmpty(et_sex.getText().toString().trim())){  
                Toast.makeText(MainActivity.this,"信息不能为空!!!",0).show();  
                return;  
            }  
            JSONObject jsonObject=new JSONObject();  
            jsonObject.put("name",et_name.getText().toString().trim());  
            jsonObject.put("age",et_age.getText().toString().trim());  
            jsonObject.put("sex",et_sex.getText().toString().trim());  
            final String  result=jsonObject.toString();  
            Log.i("jSON字符串",result);  
            new Thread(new  Runnable() {  
                @Override  
                public void run() {  
                      
                    try {  
                        Socket socket=new Socket(InetAddress.getByName(host),8155);  
                        OutputStream os=socket.getOutputStream();  
                        os.write(result.getBytes());  
                        os.flush();  
                        //防止服务端read方法读阻塞  
                        socket.shutdownOutput();  
                    } catch (UnknownHostException e) {  
                        // TODO Auto-generated catch block  
                        e.printStackTrace();  
                    } catch (IOException e) {  
                        // TODO Auto-generated catch block  
                        e.printStackTrace();  
                    }  
                      
                }  
            }).start();  
        }  
      
          
      
    }  

服务端代码:
    package com.yqq.jsonclienttest1;  
      
    import java.io.ByteArrayOutputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.OutputStream;  
    import java.net.InetAddress;  
    import java.net.ServerSocket;  
    import java.net.Socket;  
    import java.net.UnknownHostException;  
      
    import org.json.JSONException;  
    import org.json.JSONObject;  
      
    import com.yqq.jsonclienttest1.R;  
      
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.os.Handler;  
    import android.os.Looper;  
    import android.os.Message;  
    import android.text.TextUtils;  
    import android.util.Log;  
    import android.view.View;  
    import android.widget.Button;  
    import android.widget.EditText;  
    import android.widget.Toast;  
      
      
      
    /** 
     * 套接字服务端 
     * @author yqq_coder 
     * 
     */  
    public class MainActivity extends Activity {  
        private Button btn;  
          volatile Socket   mSocket;  
          ServerSocket server;  
        private Handler mHandler=new Handler(){  
      
            @Override  
            public void handleMessage(Message msg) {  
                // TODO Auto-generated method stub  
                super.handleMessage(msg);  
                if(msg.what==0x01){  
                    Toast.makeText(MainActivity.this,(String) msg.obj,500).show();  
                    btn.setEnabled(true);  
                }  
                if(msg.what==0x02){  
                    new Thread(new  Runnable() {  
                        @Override  
                        public void run() {  
                              
                            try {  
                                 Log.i("客户端连接","读取客户端发来的数据");  
                                InputStream ins=mSocket.getInputStream();  
                                ByteArrayOutputStream os=new ByteArrayOutputStream();  
                                int len=0;  
                                byte[] buffer=new byte[1024];  
                                while((len=ins.read(buffer))!=-1){  
                                    os.write(buffer);  
                                }  
                                //第一步,生成Json字符串格式的JSON对象  
                                JSONObject jsonObject=new JSONObject(os.toString());  
                                //第二步,从JSON对象中取值如果JSON 对象较多,可以用json数组  
                                String name="姓名:"+jsonObject.getString("name");  
                                String age="年龄:"+jsonObject.getString("age");  
                                String sex="性别:"+jsonObject.getString("sex");  
                                StringBuffer sb=new StringBuffer();  
                                sb.append(name);  
                                sb.append(age);  
                                sb.append(sex);  
                                Looper.prepare();  
                                Message message=Message.obtain();  
                                message.what=0X01;  
                                message.obj=sb.toString();  
                                mHandler.sendMessage(message);  
                                Looper.loop();  
                                  
                                  
                            } catch (Exception e) {  
                                // TODO Auto-generated catch block  
                                e.printStackTrace();  
                            }finally{  
                                  
                                if(mSocket!=null){  
                                    try {  
                                        mSocket.close();  
                                        mSocket=null;  
                                    } catch (IOException e) {  
                                        // TODO Auto-generated catch block  
                                        e.printStackTrace();  
                                    }  
                                      
                                }  
                            }  
                              
                        }  
                    }).start();  
                }  
                  
            }  
              
              
        };  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            btn=(Button) findViewById(R.id.btn);  
              
        }  
          
          
          
        public void submit(View v) throws JSONException,IOException{  
            btn.setEnabled(false);  
              
               
              
            new Thread(new  Runnable() {  
                  
                @Override  
                public void run() {  
                      
                        try {  
                             Log.i("阻塞,等待客户端连接","<<<<<<<<<");  
                             if(server==null){  
                             server=new ServerSocket(8155);  
                             }  
                             mSocket=server.accept();  
                             Log.i("客户端连接成功","<<<<<<<<<客户端连接成功");  
                            Looper.prepare();  
                            Message message=Message.obtain();  
                            message.what=0X02;  
                            mHandler.sendMessage(message);  
                            Looper.loop();  
                              
                              
                        } catch (Exception e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }   
                      
                      
                      
                }  
            }).start();  
        }  
      
          
      
    }  

    if(server==null){  
                         server=new ServerSocket(8155);  
                         }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读