IT虾米网

安卓Socket的使用

sanshao 2022年05月05日 手机开发 195 0

*** 一、创建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; 
    } 
 

评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

安卓同步锁的使用