1、修改原来的连接器
1)在连接时发送信息给服务器
new Thread(new RequestWorker()).start();
2)把验证码放入队列里
public void auth(String auth) {
putRequest(auth);
}
3)代码:
public class Connector {
//ip
private String dstName = "192.168.1.100";
//端口
private int dstPort = 10002;
private Socket mClientSocket;
private ConnectorListener mConnectorListener;
//队列
private ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(8);
/**
* 使用三次握手实现长连接
*/
public void connect() {
try {
if (mClientSocket == null || mClientSocket.isClosed()) {
mClientSocket = new Socket(dstName, dstPort);
}
//发送信息给服务器
new Thread(new RequestWorker()).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
InputStream is = mClientSocket.getInputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
final String text = new String(buffer, 0, len);
System.out.println("text : " + text);
if (mConnectorListener != null) {
mConnectorListener.pushData(text);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}
}
public class RequestWorker implements Runnable {
@Override
public void run() {
// 数据通讯
OutputStream os;
try {
os = mClientSocket.getOutputStream();
while (true) {
String content = queue.take();
os.write(content.getBytes());
}
} catch (Exception e) {
throw new RuntimeException("获取数据失败:" + e.getMessage());
}
}
}
/**
* 把验证放入队列
* @param auth
*/
public void auth(String auth) {
putRequest(auth);
}
/**
* 把信息放入队列
* @param content
*/
public void putRequest(String content) {
try {
queue.put(content);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 断开连接
*/
public void disconnect() {
try {
if (mClientSocket != null && !mClientSocket.isClosed()) {
mClientSocket.close();
mClientSocket = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void setConnectorListener(ConnectorListener listener) {
this.mConnectorListener = listener;
}
public interface ConnectorListener {
void pushData(String data);
}
}
2、封装管理类
public class ConnectorManager implements ConnectorListener {
//连接器
private Connector connector;
private ConnectorListener mListener;
private static ConnectorManager instance;
private ConnectorManager() { }
public static ConnectorManager getInstance() {
if (instance == null) {
synchronized (ConnectorManager.class) {
if (instance == null) {
instance = new ConnectorManager();
}
}
}
return instance;
}
/**
* 创建连接发送验证
* @param auth
*/
public void connnect(String auth) {
connector = new Connector();
connector.setConnectorListener(this);
connector.connect();
connector.auth(auth);
}
public void connnect(AuthRequest auth) {
connector = new Connector();
connector.setConnectorListener(this);
connector.connect();
connector.auth(auth.getData());
}
public void putRequest(String request) {
connector.putRequest(request);
}
public void putRequest(Request request) {
connector.putRequest(request.getData());
}
@Override
public void pushData(String data) {
if (mListener != null) {
mListener.pushData(data);
}
}
public void setConnectorListener(ConnectorListener listener) {
this.mListener = listener;
}
public interface ConnectorListener {
void pushData(String data);
}
}
3、服务类:
public class ConnService extends Service implements ConnectorListener {
private ConnectorManager mConnManager;
@Override
public IBinder onBind(Intent intent) {
return null;
}
/**
* 连接服务
*/
@Override
public void onCreate() {
super.onCreate();
new Thread(new Runnable() {
@Override
public void run() {
mConnManager = ConnectorManager.getInstance();
mConnManager.setConnectorListener(ConnService.this);
mConnManager.connect("#A");
}
}).start();
}
@Override
public void pushData(String data) {
Intent intent = new Intent();
intent.setAction(PushReceiver.ACTION);
intent.putExtra(PushReceiver.DATA, data);
sendBroadcast(intent);
}
}
4、主界面:
public class ClientActivity extends Activity {
private EditText mEtContent;
private ConnectorManager mConnectorManager;
private PushReceiver mPushReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mConnectorManager = ConnectorManager.getInstance();
mEtContent = (EditText)findViewById(R.id.et);
//开启服务
startService(new Intent(this, ConnService.class));
initReceiver();
}
private void initReceiver() {
mPushReceiver = new PushReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (PushReceiver.ACTION.equals(intent.getAction())) {
String response = intent.getStringExtra(PushReceiver.DATA);
ToastUtil.show(ClientActivity.this, response);
}
}
};
IntentFilter filter = new IntentFilter(PushReceiver.ACTION);
registerReceiver(mPushReceiver, filter);
}
/**
* 发送信息
* @param view
*/
public void clickMessage(View view){
if (!TextUtils.isEmpty(mEtContent.getText())) {
mConnectorManager.putRequest(mEtContent.getText().toString());
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mPushReceiver);
super.onDestroy();
}
}
—————————————————————————————————————————————————–
java架构师项目实战,高并发集群分布式,大数据高可用视频教程,共760G
下载地址:
https://item.taobao.com/item.htm?id=555888526201
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
+
hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门
内容详情:
【入门篇】
J2SE的Socket网络编程应用
J2SE的反射机制高级应用
J2SE高深讲解
JAVA编程思想 中级教程
JAVA编程思想 初级教程
JAVA编程思想 高级教程
基于J2SE的QQ聊天工具开发
我来说说面向对象
【进阶篇】
CRM项目
Eclipse
Hibernate
JAVA WEB开发视频
JAVAWEB开发实战经典-高级案例篇
JAVAWEB
JAVA线程并发教程
java网上在线支付实战视频
java设计模式
jdbc
junit
mybatis
spring mvc
SpringMvc+Spring+MyBatis+Maven整合视频
SpringMVC
Spring
Struts2 开发实战讲解
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频
Struts
SVN
tomcat
weblogic
WebService从入门到上手企业开发
企业系统OA办公自动化
手机进销存系统
数据结构和算法视频
设计模式系列
【高级篇】
Cas单点登录
Extjs4.1+Spring3.2+hibernate4.1+MySql5商城
Git权威指南
groovy入门视频
Java 8新特性
Lucene
Mongodb
node.js
Nutch相关框架
OA办公自动化系统
Quartz Job定时任务
Solr高级应用视频
Spring Security权限控制
Spring源码解读与设计详析
Struts2源码剖析与架构指导
大型CMS内容管理系统项目
微信入门视频
深入JVM内核—原理、诊断与优化
深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)
银行接口资料
【架构篇】
ActiveMQ实战
Apache-Tomcat集群搭建
Linux集群
Linux高级架构架构方案及实现指南
Memcached分布式集群
Mysql特级优化课程
Nginx+Tomcat+Memcached群集配置软件包
Nginx服务器搭建
Nginx网站架构实战(Web服务器负载均衡与反向代理)
SOA Dubbo
storm入门到精通
storm集群的搭建
storm项目实战
UML建模
互联网公司技术架构系列
京东B2C平台推荐搜索的实践和思考
京东大数据分析与创新应用
京东大规模存储持续研发
京东电商海量订单处理OFC系统的关键技术
优米网架构设计方案
基于SOA 思想下的百万数据架构
大型网站提速之MySQL优化
大型网站架构设计
大数据高并发架构实战案例
数据优化技术Redis
数据库高并发原理
深入Java程序性能调优
深入浅出MongoDB应用实战集群及系统架构
深度揭秘服务器端内幕
电商网站之Solr应用
系统架构设计师
阿里分布式数据库服务实践
—————————————————————————————————————————————————–