android socket工具类
来源:互联网 发布:sqlserver update多行 编辑:程序博客网 时间:2024/06/17 00:24
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 都是intfinal 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 0
- android socket工具类
- socket通讯工具类
- Socket通讯工具类【SocketTools】
- Android socket通信: 一问一答,一问多答客户端网络请求工具类的实现
- Socket向服务端发送消息工具类
- java.net 包 Socket通信 工具类
- Socket向服务端发送消息工具类
- tcp-udp socket 简单工具类
- Socket通讯工具类【SocketTools】(20140402修订版)
- BaseCode之socket工具类:SocketHelper.java
- 【Android工具】时间工具类
- Android中Socket通讯类
- Java Socket、 Android网络工具类
- [Android工具类]Android File工具类
- Socket 转发工具
- sokit socket调试工具
- android Socket
- android socket
- javax.naming.NameNotFoundException
- Android 主题动态切换框架:Prism
- Hexo博客搭建(Mac)
- html在移动端input调出数字键盘同时密文输入
- Win32.Rootkit.Lapka.Wozw 木马病毒分析
- android socket工具类
- VS2012 查找替换正则规则
- ubuntu下安装hadoop2.7
- Android Studio 使用教程(五)之打包apk
- 几十万码农卡死在这个地方,Java的数据结构到底该怎么学
- C语言随机数小游戏
- 算法分析与设计第十三周:582. Kill Process
- BZOJ2809: [Apio2012]dispatching
- IntelliJ IDEA maven库下载依赖包速度慢的问题