android socket工具类

package doge.healthcare.Utils;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import doge.healthcare.activity.Main;
import doge.healthcare.activity.inital;
import doge.healthcare.base.BaseActivity;

/**
 * Created by doge on 2017/4/25.
 */

public class SocketUtil {
    private int port = 6666;
    private int SUCCESS= 1;
    private int INTERNET_ERROR=0;
    private int SERVER_ERROR=-1;
    private int CODE_ERROR=-2;
    public SocketUtil() {

    }

    public SocketUtil(int port) {
        this.port = port;
    }

    //发送数据给服务器,且不返回数据到原活动
    public synchronized void send(final String message) {
	//主线程不能网络操作,因此必须开一个新的线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //建立客户端socket连接,指定服务器位置及端口
                    Socket C_socket = new Socket("127.0.0.1", port);//这里改ip和端口
                    //socket的输入流和输出流
                    java.io.OutputStream os = C_socket.getOutputStream();
                    BufferedWriter C_BW = new BufferedWriter(new OutputStreamWriter(os));
                    InputStream is = C_socket.getInputStream();
                    BufferedReader C_br = new BufferedReader(new InputStreamReader(is));
                    //对socket进行读写操作
                    C_BW.write(message);
                    C_BW.flush();
                    C_br.close();
                    is.close();
                    C_BW.close();
                    os.close();
                    C_socket.close();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                    System.out.println("IOException e");
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("IOException e");
                }


            }
        }).start();

    }

    //    向服务器查询数据,且将服务器发回的字符串通过handler传回去
//    初始化时需传入发送的消息与用来响应返回数据的handler
    public synchronized void inquire (final String message, final Handler mHandler) {

        new Thread(new Runnable() {
            @Override

            public void run() {



                try {
                    //建立客户端socket连接,指定服务器位置及端口
                    Socket C_socket = new Socket("127.0.0.1", port);
                    //socket的输入流和输出流
                    OutputStream os = C_socket.getOutputStream();
                    BufferedWriter BW = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
                    InputStream is = C_socket.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                    //对socket进行读写操作
                    String send_message = new String(message.getBytes("UTF-8"));
                    BW.write(send_message);
                    BW.flush();
                    String receive = "";
                    String content;
                    while ((content = br.readLine()) != null) {
                        receive += content;
                    }
                    Message msg = new Message();
                    msg.obj= receive;
                    mHandler.sendMessage(msg);
                    br.close();
                    is.close();
                    BW.close();
                    os.close();
                    C_socket.close();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                    System.out.println("UnknownHostException e");
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("IOException e");
                }


            }
        }).start();


    }


    //发送数据给服务器,且保存到sharedpreference(这个可有可无,为了方便写的)
    public synchronized void sendMessage(final String message, final BaseActivity login,final Handler mHandler) {

        new Thread(new Runnable() {
            @Override

            public void run() {



                try {
                    //建立客户端socket连接,指定服务器位置及端口
                    Socket C_socket = new Socket("127.0.0.1", port);
                    //socket的输入流和输出流
                    OutputStream os = C_socket.getOutputStream();
                    BufferedWriter BW = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
                    InputStream is = C_socket.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                    //对socket进行读写操作
                    String send_message = new String(message.getBytes("UTF-8"));
                    BW.write(send_message);
                    BW.flush();
                    String receive = "";
                    String content;
                    while ((content = br.readLine()) != null) {
                        receive += content+'\n';
                    }
                    String [] result =  receive.split("\n");
                    if (result[0].equals("操作成功")) {
                        mHandler.sendEmptyMessage(SUCCESS);
                        if (result.length>1)
                        {
                            SharedPreferences sp = login.getSharedPreferences("user", Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = sp.edit();
                            editor.putString("name",result[1] );//键值对
                            editor.commit();
                        }
                    } else
                        mHandler.sendEmptyMessage(CODE_ERROR);

                    br.close();
                    is.close();
                    BW.close();
                    os.close();
                    C_socket.close();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                    System.out.println("UnknownHostException e");
                    mHandler.sendEmptyMessage(SERVER_ERROR);
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("IOException e");
                    mHandler.sendEmptyMessage(INTERNET_ERROR);
                }


            }
        }).start();


    }



}
使用方法如下:
  new SocketUtil().sendMessage("login" + '\n' + accout + '\n' + password +  '\n', login, mHandler);
   发送消息   

	//初始化handler,SUCCESS,INTERNET ERROR 都是int
  final Handler mHandler = new Handler() {

            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                

                    if(msg.what== SUCCESS) {
                        Toast.makeText(login.getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
                        SharedPreferences sp = getSharedPreferences("user", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = sp.edit();
                        editor.putString("account",ac.getText().toString());//键值对
                        editor.putString("password",pw.getText().toString());
                        editor.commit();
                        Intent intent = new Intent(Login.this, Main.class);
                        startActivity(intent);
                        Login.this.finish();

                    }
                     else if(msg.what== INTERNET_ERROR) {
                        Toast.makeText(login.getApplicationContext(), "登录失败,网络异常", Toast.LENGTH_SHORT).show();

                    }
                    else if(msg.what== SERVER_ERROR){
                        Toast.makeText(login.getApplicationContext(), "登录失败,服务器异常", Toast.LENGTH_SHORT).show();
                    }
                    else if(msg.what== CODE_ERROR){
                        Toast.makeText(login.getApplicationContext(), "登录失败,密码错误", Toast.LENGTH_SHORT).show();


                    }
            }

        };





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值