packageandroid.core.service;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.net.Socket;importjava.net.SocketAddress;importjava.net.UnknownHostException;/***Socket连接操作类**@authorEsa*/publicclassTCPSocketFactory{privateSocketmSocket;//socket连接对象privateDataOutputStreamout;privateDataInputStreamin;//输入流privatebyte[]buffer=newbyte[1024*1];//缓冲区字节数组,信息不能大于此缓冲区privatebyte[]tmpBuffer;//临时缓冲区privateTCPSocketCallbackcallback;//信息回调接口privateinttimeOut=1000*30;/***构造方法传入信息回调接口对象**@paramsdi*回调接口*/publicTCPSocketFactory(TCPSocketCallbackcallback){this.callback=callback;}/***连接网络服务器**@throwsUnknownHostException*@throwsIOException*/publicvoidconnect(Stringip,intport)throwsException{mSocket=newSocket();SocketAddressaddress=newInetSocketAddress(ip,port);mSocket.connect(address,timeOut);//连接指定IP和端口if(isConnected()){out=newDataOutputStream(mSocket.getOutputStream());//获取网络输出流in=newDataInputStream(mSocket.getInputStream());//获取网络输入流if(isConnected()){callback.tcp_connected();}}}publicvoidsetTimeOut(inttimeOut){this.timeOut=timeOut;}/***返回连接服是否成功**@return*/publicbooleanisConnected(){if(mSocket==null||mSocket.isClosed()){returnfalse;}returnmSocket.isConnected();}/***发送数据**@parambuffer*信息字节数据*@throwsIOException*/publicvoidwrite(byte[]buffer)throwsIOException{if(out!=null){out.write(buffer);out.flush();}}/***断开连接**@throwsIOException*/publicvoiddisconnect(){try{if(mSocket!=null){if(!mSocket.isInputShutdown()){mSocket.shutdownInput();}if(!mSocket.isOutputShutdown()){mSocket.shutdownOutput();}}if(out!=null){out.close();}if(in!=null){in.close();}if(mSocket!=null&&!mSocket.isClosed()){//判断socket不为空并且是连接状态mSocket.close();//关闭socket}}catch(Exceptione){e.printStackTrace();}finally{callback.tcp_disconnect();out=null;in=null;mSocket=null;//制空socket对象}}/***读取网络数据**@throwsIOException*/publicvoidread()throwsIOException{if(in!=null){intlen=0;//读取长度while((len=in.read(buffer))>0){tmpBuffer=newbyte[len];//创建临时缓冲区System.arraycopy(buffer,0,tmpBuffer,0,len);//将数据拷贝到临时缓冲区callback.tcp_receive(tmpBuffer);//调用回调接口传入得到的数据tmpBuffer=null;}}}}

更多相关文章

  1. Android中XML格式数据的简单使用
  2. Android(安卓)数据库操作
  3. 关于android Http访问,上传,用了三个方法
  4. android 本地存储数据
  5. android操作通讯录的联系人
  6. Android中SQLite增删改查的方法(Android开发视频讲座)
  7. android 通过ContentResolver获得联系人数据
  8. Android(安卓)Ble连接,Ble133异常处理,写入消息
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. Android(安卓)NDK开发入门实例
  2. Flutter for Android开发详细配置开创建
  3. ELF文件查看利器之readelf用法
  4. 数据共享的方法
  5. lame音频压缩解码(二)之编译事例Demo
  6. android 仿淘宝实现标题栏滑动渐变效果,gi
  7. Android(安卓)Ndk: 如何从native层直接获
  8. 浅谈android view事件分发机制
  9. android通过浏览器得到手机数据
  10. Android自动填写验证码