public class SocketUtility {
private final String SEPARATOR_FLAG = “
@
@
@”;
final String TAG="------------------------------------------------Socket----------------------------------------------";
private boolean isRun = true;
private DataInputStream dis;
byte buff[] = new byte[4096];
private String Str_get;
private int rcvLen;
private Socket mSocket = null;
private BufferedReader bufferedReader = null;
private Context mContext = null;
//定义输出流(发送)
private OutputStream mOutputStream = null;
//定义输入流(接收)
private InputStream mInputStream = null;
//地址
private String mAddress = “192.168.1.107”;
//端口
private int mPort = 6666;
private int msgid = 0;
//参数
private Thread mThread = null;
Thread mHeatThread = null;
private static SocketUtility instance = null;
// 状态
public static final int STATUS_UNINIT = 0;
public static final int STATUS_INIT = 1;
public static final int STATUS_DISCONNECT = 2;
public static final int STATUS_CONNECT = 3;
public static final int STATUS_RELEASE = 4;
public static final int RECV_BUF_MAX_LEN = 1024 * 1024; //1M
private static int mStatus = STATUS_UNINIT;
private long mHeatLastRecvTime = 0; //上次接受心跳时间戳
private long mHeatLastSendTime = 0; //上次发送心跳时间戳
private long mHeatLossHeatCnt = 0; //丢失心跳
private long MAX_LOSS_HEAT = 3;
private final long mHeatPerMS = 60 * 1000; //心跳间隔
public void thread()
{
Thread_Socket_Connect thread = new Thread_Socket_Connect();
thread.start();
}
// private List mListeners = null;
// private List mSndMsgs = null;
// public SocketUtility() {
//
// }
// public synchronized String getMsgid() {
// return String.format("%d", msgid++);
// }
// public static SocketUtility getInstance() {
// if (instance == null) {
// instance = new SocketUtility();
// }
// return instance;
// }
// public void setAttribute(Context context) {
// mListeners = new ArrayList<>();
// mSndMsgs = new ArrayList<>();
// mContext = context;
// }
class Thread_Socket_Connect extends Thread{
@Override
public void run() {
super.run();
// if (mSocket != null) {
// if (LogManager.SocketUtility_LOG)
// MyLoger.i(this, “start createSocket…” + mSocket);
// closeSocket();
// }
// 1 连接
try {
mSocket = new Socket(mAddress, mPort);
// SocketAddress socAddress = new InetSocketAddress(mAddress, mPort);
// mAddress = AppCofing.getInstance().getValueByKey(AppCofing.CFG_SERVICE_IP_KEY);
// mPort = AppCofing.getInstance().getValueByKey(AppCofing.CFG_SERVICE_ALARM_PORT_KEY);
MyLoger.i(this, “与服务器建立连接” + mSocket);
Log.v(TAG, “创建socket连接”);
if (LogManager.SocketUtility_LOG)
MyLoger.i(this, “start createSocket…” + mAddress + “:” + mPort);
} catch (IOException e) {
e.printStackTrace();
}
// if (TextUtils.isEmpty(mAddress) || TextUtils.isEmpty(mPort) || (!CommonUtils.isNumeric(mPort))) {
MyLoger.e(this, “服务器配置参数…不正确 start createSocket…” + mAddress + “:” + mPort);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return;
}
// int port = Integer.parseInt(mPort);
// mSocket = SSlClient.CreateSSLCleint(mContext, mAddress.trim(), port);
// mSocket = new Socket(mAddress, mPort);
// if (mSocket != null) {
// mSocket.setSoTimeout(3000);
while (isRun){
try {
mSocket.setSoTimeout(300000);
String res=“123456”;
OutputStream mOutputStream = mSocket.getOutputStream();
mOutputStream.write(res.getBytes());
Log.v(TAG, "已向服务器发送数据: "+res);
// PrintStream printStream = new PrintStream(mOutputStream);
// printStream.println(mOutputStream);
//
InputStream mInputStream = mSocket.getInputStream();
dis = new DataInputStream(mInputStream);
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(mInputStream));
// String Str_get = bufferedReader.readLine();
rcvLen = dis.read(buff);
Str_get = new String(buff,0,rcvLen,“utf-8”);
MyLoger.i(this, "收到服务器的数据是:" + Str_get);
Log.v(TAG, "Get Data from Server: " + Str_get);
// mSocket.connect(socAddress, 100000);
if (Str_get.equals("QuitClient")){ //服务器要求客户端结束
isRun = false;
mOutputStream.close();
mInputStream.close();
mSocket.close();
Log.v(TAG, "关闭socket");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}}}