android开发tcp发送与接收

来源:互联网 发布:上海中磁数据恢复中心 编辑:程序博客网 时间:2024/06/10 07:33

这段时间在研究tcp通信,这里分享一下代码:

       private WifiManager manager;/**组播锁*/private WifiManager.MulticastLock lock;/**tcp连接的服务器IP和port*/private static String TCP_SERVER;private static int TCP_PORT; /**tcp的发送与接收流*/private BufferedReader mBufferedReader = null;private PrintWriter mPrintWriter = null;/**服务器发送的message*/private String mStrMSG = "";/**tcp连接的socket*/    private Socket tcpConnectSocket;     /***判断TCP连接是否异常断开,断开后需要重新连接*/    public static boolean isConntectTCP = false;    /**心跳包计时是否收到服务器回应,检测是否连接断开*/    public static boolean isReceiveCheckServer = false;manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);lock = manager.createMulticastLock("UDPwifi");/** * 判断网络是否连接 * @param context * @return */ public boolean isNetworkConnected(Context context) { if (context != null) {    ConnectivityManager mConnectivityManager = (ConnectivityManager) context                                              .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();      if (mNetworkInfo != null) {          return mNetworkInfo.isAvailable();     }    }     return false;  }protected void connectServerWithTCPSocket(String tcp_ip,int port) {      LogUtils.d(TAG, "连接的服务器IP:"+tcp_ip+" 服务器端口号:"+port);try {// 创建一个Socket对象,并指定服务端的IP及端口号tcpConnectSocket = new Socket(tcp_ip, port);mBufferedReader = new BufferedReader(new InputStreamReader(tcpConnectSocket.getInputStream()));    mPrintWriter = new PrintWriter(    tcpConnectSocket.getOutputStream(), true);    isConntectTCP = true;new Thread(mTCPReceiveData).start();//new Thread(checkTcpServer).start();            StateMonitor.sendProtocol(HandlerMsgConstantValues.MSG_SENDTCP, ProtocolValues.PROTOCOL_SEND_IDANDNAME);//            DataInputStream input = new DataInputStream(tcpConnectSocket.getInputStream());//            input.readUTF()//            mPrintWriter.println("hello.I am android client");//mPrintWriter.flush();} catch (UnknownHostException e) {isConntectTCP = false;e.printStackTrace();} catch (IOException e) {isConntectTCP = false;e.printStackTrace();} }/** * 发送TCP消息 * @param data */private void sendTcpMsg(String data){//if(!data.contains("Alive")){            LogUtils.d(TAG, "发送的TCP数据为:"+data);//}         if(tcpConnectSocket!=null && tcpConnectSocket.isConnected() && mPrintWriter != null){            mPrintWriter.println(data); mPrintWriter.flush();            }    }private Runnable mTCPReceiveData = new Runnable()  {public void run() {while (true && isConntectTCP) {char []buffer;int leng = 0;try {buffer = new char[1024];if (tcpConnectSocket.isConnected() && mBufferedReader!= null && (leng = mBufferedReader.read(buffer)) != -1) {CharBuffer b = CharBuffer.wrap(buffer, 0, leng);mStrMSG = b.toString();//if(!mStrMSG.contains("OK")){  LogUtils.d(TAG, "接收到的server数据为:"+mStrMSG);//}StateMonitor.updateState(HandlerMsgConstantValues.MSG_INTERNETRECEIVE, mStrMSG);mStrMSG = null;}} catch (Exception e) {break;}}}};

0 0
原创粉丝点击