socket客戶端原理詳解(傳文字或圖片)

       //1.創建socket
        Socket s = new Socket("192.168.50.185", 5051);
        System.out.println("已連接到服務器185端口,準備傳送圖片 ...");
        //2.得到socket讀寫流
        OutputStream out = s.getOutputStream();
        //===============================================
        // 3**.這一步很關鍵:不管是圖片還是字符串,都需要將圖片或者字符串寫到流中**
        //3.1構建圖片的流
        //  FileInputStream fis = new FileInputStream(pic_path);
        //3.2構建字符串的流
        ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(json_name_feature.getBytes());
        byte[] buf = new byte[1024];
        int len = 0;
        //4.往輸出流裏面投放數據
        while ((len = tInputStringStream.read(buf)) > 0)
        {
           //4.1 將圖片流或者字符串流一點一點讀出來
           //4.2 將讀出來的流,用socket獨有的讀寫流寫入到socket中
            out.write(buf,0,len);
        }
        //通知服務端,數據發送完畢
        s.shutdownOutput();
        //===============================================

        //這個流是socket特有的,作用:讀出來socket裏面的流;上面的作用是:向socket裏面寫流
        InputStream in = s.getInputStream();
        byte[] bufIn = new byte[1024];
        System.out.println("222");
        StringBuilder SBuf = new StringBuilder();
        // 將socket裏面的流一點一點讀出來
        while ((len = in.read(bufIn)) != -1)
        {
            System.out.println("aaaaa");
            String sss =  new String(bufIn,0,len);
            SBuf.append(sss);
        }

        String state = SBuf.toString();
        //關閉流
        s.close();
        tInputStringStream.close();
        out.flush();
        out.close();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章