| | |
| | | package com.hdl.sdk.socket.client;
|
| | |
|
| | |
|
| | |
|
| | | import com.hdl.sdk.common.utils.ByteUtils;
|
| | | import com.hdl.sdk.common.utils.LogUtils;
|
| | | import com.hdl.sdk.common.utils.ThreadToolUtils;
|
| | | import com.hdl.sdk.socket.SocketBoot;
|
| | |
| | |
|
| | | /**
|
| | | * 从连接池中找出当前IP及端口的连接客户端
|
| | | *
|
| | | * @param ipAdderss 连接IP地址
|
| | | * @param port 连接端口
|
| | | * @param port 连接端口
|
| | | * @return
|
| | | */
|
| | | public static TcpClient getTcpClientByIP(String ipAdderss,int port) {
|
| | | for(TcpClient tcpClient:tcpClientList){
|
| | | if(tcpClient.ip.equals(ipAdderss)&&tcpClient.port==port)
|
| | | {
|
| | | public static TcpClient getTcpClientByIP(String ipAdderss, int port) {
|
| | | for (TcpClient tcpClient : tcpClientList) {
|
| | | if (tcpClient.ip.equals(ipAdderss) && tcpClient.port == port) {
|
| | | return tcpClient;
|
| | | }
|
| | | }
|
| | | return null;
|
| | | return null;
|
| | | }
|
| | |
|
| | | private byte[] readBuffer = new byte[4*1024];
|
| | | private byte[] readBuffer = new byte[4 * 1024];
|
| | |
|
| | | private TcpClient(String ip, int port, SocketOptions socketOptions) {
|
| | | this.socketOptions = socketOptions;
|
| | |
| | | mSocket.setTcpNoDelay(true);
|
| | | mSocket.setReuseAddress(true);
|
| | | // mSocket.setKeepAlive(true);
|
| | | mSocket.setSoTimeout(20 * 1000);
|
| | | mSocket.setSoTimeout(25 * 1000);
|
| | |
|
| | | tcpClientList.add(this);
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | @Override
|
| | |
| | | public void onHandleResponse() throws Exception {
|
| | | final InputStream stream = getInputStream();
|
| | | if (stream != null && getOptions() != null) {
|
| | | while ( true) {
|
| | | int len=getInputStream().read(readBuffer);
|
| | | if(len<=0){
|
| | | throw new Exception("接收异常,接收数据长度len="+len);
|
| | | while (true) {
|
| | | int len = getInputStream().read(readBuffer);
|
| | | if (len <= 0) {
|
| | | throw new Exception("接收异常,接收数据长度len=" + len);
|
| | | }
|
| | |
|
| | | IHandleMessage handleMessage = getOptions().getHandleMessage();
|
| | | if (handleMessage != null) {
|
| | | byte []bytes = new byte[len];
|
| | | System.arraycopy(readBuffer,0,bytes,0,len);
|
| | | byte[] bytes = new byte[len];
|
| | | System.arraycopy(readBuffer, 0, bytes, 0, len);
|
| | | //完整的数据才回调
|
| | | handleMessage.read(bytes);
|
| | | handleMessage.read(bytes, ip);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | public void sendMsg(byte[] msg) throws Exception {
|
| | | final OutputStream outputStream = getOutStream();
|
| | | if (outputStream != null && getOptions() != null) {
|
| | | IHandleMessage handleMessage = getOptions().getHandleMessage();
|
| | | handleMessage.write(handleMessage.write(msg));
|
| | | outputStream.write(msg);
|
| | | outputStream.flush();
|
| | | IHandleMessage handleMessage = getOptions().getHandleMessage();
|
| | | handleMessage.write(handleMessage.write(msg));
|
| | | outputStream.write(msg);
|
| | | outputStream.flush();
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | * 处理连接状态
|
| | | */
|
| | | public void onConnectStatus(int status) {
|
| | |
|
| | | ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | |
| | | if (list != null && !list.isEmpty()) {
|
| | | for (ConnectStatusListener listener : list) {
|
| | | switch (status) {
|
| | | case ConnectStatus
|
| | | .CONNECTING:
|
| | | case 0:
|
| | | listener.onConnecting();
|
| | | break;
|
| | | case ConnectStatus
|
| | | .CONNECTED:
|
| | | case 1:
|
| | | listener.onConnected();
|
| | | break;
|
| | | case ConnectStatus
|
| | | .DISCONNECT:
|
| | | case 2:
|
| | | listener.onConnectFailed();
|
| | | break;
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | LogUtils.i("TcpClient onConnectStatus status:" + status);
|
| | |
|
| | | }
|
| | |
|
| | |
|