*** 一、创建Socket
实现长连接
/**
* TCP连接
*/
public static void connetToServer() throws IOException {
try {
client = new Socket("10.10.100.254", 8899);//IP+端口号
client.setSoTimeout(10000);//设置超时时间
out = new DataOutputStream(client.getOutputStream());
while (true){
client.sendUrgentData(0xFF);//发送心跳包来监听连接状态 如果走到这里异常则为连接断开
Log.i("SocketUtils==", "处于连接状态");
}
} catch (UnknownHostException e) {
e.printStackTrace();
Log.i("SocketUtils==", "UnknownHostException处于断开状态");
} catch (IOException e) {
e.printStackTrace();
Log.i("SocketUtils==", "IOException处于断开状态");
//此时可发通知进行重连 --- 待测
EventBus.getDefault().post(new PayEven("进行Socket重连"));
}
}
*** 二、发送数据
/**
* TCP发送
*/
public static void send(byte[] bytes) {
if(client!=null&&client.isConnected()) {
try {
Log.i("SocketUtils==", "连接成功");
// 步骤1:从Socket 获得输出流对象OutputStream
// 该对象作用:发送数据
outputStream = client.getOutputStream();
// 步骤2:写入需要发送的数据到输出流对象中
outputStream.write(bytes);
// 特别注意:数据的结尾加上换行符才可让服务器端的readline()停止阻塞
// 步骤3:发送数据到服务端
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}else {
Log.i("SocketUtils==", "连接失败或未连接成功");
}
}
*** 三、关闭连接
/**
* 关闭
*/
public static void close() {
if (client != null) {
// 断开 客户端发送到服务器 的连接,即关闭输出流对象OutputStream
try {
outputStream.close();
// 最终关闭整个Socket连接
client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*** 四、获取连接状态
/**
* 获取连接状态
*/
public static boolean isconnect() {
boolean isconnect=false;
if (client!=null&&!client.isClosed()) {
isconnect=client.isConnected();
}
return isconnect;
}