data not sent using bluetooth socket (android)

痴心易碎 提交于 2019-12-13 12:19:02

问题


I am trying to send a file using Android bluetooth sockets. I am getting the pairing requests but unfortunately the data is not being transferred my Server side and client side is as follows:

Server: (for my application server is receiving the data)

public void run() {
super.run();

    BluetoothAdapter mBtadapter = BluetoothAdapter.getDefaultAdapter();
    Log.i("bluetooth Adapter", "got adapter "+ mBtadapter.getAddress());

    try {
        Ssocket = mBtadapter.listenUsingRfcommWithServiceRecord("CardXchange", uuid);


        Log.i("Socket", "Socket Acquired "+ Ssocket.toString());
    } catch (IOException e) {

        e.printStackTrace();
    } 



    while(true){

        if(read_flag()==1){

            try {
                Toast.makeText(c, "flag is eventually 1", Toast.LENGTH_LONG).show();
                Ssocket.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
            break;

        }





        try {
            client_socket = Ssocket.accept();
            if(client_socket!=null){

//this function is used to handle the connection when sockets get connected
            manageConnection1(client_socket);

                Ssocket.close();

                break;
            }
        } catch (IOException e) {

            e.printStackTrace();
        }



    }

    Log.i("breaked ", "oh god!! out of the loop ");
}


//implementation of the function
private void manageConnection1(BluetoothSocket client_socket2) {
    // TODO Auto-generated method stub
    int bytes;

    Log.i("serevr chya manage connection madhe gela", "in servers manage connection ");

    File file =  new File("/sdcard/myfolder/received.Xcard");

    try {
        FileOutputStream fos = new FileOutputStream(file);
        try {
            InputStream is = client_socket2.getInputStream();



            while((bytes = is.read(buffer, 0, 1024))>0){

                fos.write(buffer, 0, 1024);

            }


            is.close();
            fos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } 

    try {
        client_socket2.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

and the client side (the sending side is like this):

public void run(){

                try {

                    Method m = send_dev.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
                    Csocket = (BluetoothSocket) m.invoke(send_dev, 1);
                    Csocket.connect();
                    manageSendConnection(Csocket);

                }catch(Exception e){

                    e.printStackTrace();
                }


            }

   //function to handle after connection is established.

            private void manageSendConnection(BluetoothSocket csocket) {
                // TODO Auto-generated method stub


                File f = new File("/sdcard/myfolder/card3.Xcard");
                byte[] buffer = new byte[(int)f.length()];
                try {
                    FileInputStream fis = new FileInputStream(f);
                    BufferedInputStream bis = new BufferedInputStream(fis);
                    try {
                        bis.read(buffer, 0, (int)f.length());

                        OutputStream os = csocket.getOutputStream();
                        os.write(buffer);
                        os.close();
                        fis.close();
                        bis.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } 

                try {
                    csocket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

I am getting the pairing request but the data is not being sent. can anyone please help me to find the problem and give a hint on solution??

来源:https://stackoverflow.com/questions/16954082/data-not-sent-using-bluetooth-socket-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!