Java Python套接字服务器不支持';无法正确发送数据库文件

Java Python套接字服务器不支持';无法正确发送数据库文件,java,python,android-studio,sockets,client-server,Java,Python,Android Studio,Sockets,Client Server,我正在尝试使用套接字将数据库文件从python服务器(PC)传输到java应用程序客户端(Android studio) 我能够毫无问题地传输文件,但当我传输数据库文件时,我就是不能使用它 android studio给出此错误: (11) malformed database schema (?) E/DefaultDatabaseErrorHandler: Corruption reported by sqlite on database: /data/user/0/com.example.

我正在尝试使用套接字将数据库文件从python服务器(PC)传输到java应用程序客户端(Android studio) 我能够毫无问题地传输文件,但当我传输数据库文件时,我就是不能使用它 android studio给出此错误:

(11) malformed database schema (?)
E/DefaultDatabaseErrorHandler: Corruption reported by sqlite on database: /data/user/0/com.example.serverclient/databases/trempi.db
    deleting the database file: /data/user/0/com.example.serverclient/databases/trempi.db

比较原始数据库文件和接收到的文件的长度。除非原始文件的长度不超过4096字节,
file.read(4096)
只读取数据库的第一部分,否则您将收到一个被截断的损坏文件。请改为尝试
file.read()


损坏文件比原始文件小4kb

现在Python服务器中的错误已经纠正,Java应用程序客户端中仍然存在一个错误:由于套接字读取一次可能只返回发送数据的一部分,因此仅调用
read
一次是不够的;所以改变

                    is.read(b,0,b.length);
                    fr.write(b,0,b.length);


现在比较原始数据库文件和接收到的文件的长度的结果是什么?损坏文件比原始文件小4kb。我解决了另一个问题。

    **Client(Android-Studio)**
    and here is my MainActivity in android studio:
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv=findViewById(R.id.tv1);
            btn=findViewById(R.id.btn);
            btn.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            Thread myThread=new Thread(new MyServer());
            myThread.start();

        }
        class MyServer implements Runnable
        {
            Handler handler=new Handler();
            @Override
            public void run() {
                try {
                    byte[] b=new byte[100000];
                    Socket s=new Socket("192.168.14.87",9012);
                    InputStream is=s.getInputStream();

                    FileOutputStream fr=new FileOutputStream(getDatabasePath("trempi.db").toString());
                    is.read(b,0,b.length);
                    fr.write(b,0,b.length);
                    s.close();
                    is.close();
                    fr.close();
                    Intent go=new Intent(MainActivity.this,Data.class);
                    startActivity(go);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

                    is.read(b,0,b.length);
                    fr.write(b,0,b.length);
                    int len;
                    while ((len = is.read(b, 0, b.length)) > 0) fr.write(b, 0, len);