有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图通过socket发送sqlite数据库文件

我正在尝试将一个数据库文件从python服务器发送到java客户端,用于我的学校项目。 所有不同的文件都已成功传输,但问题是当我尝试发送文件时。数据库文件。 当我试着发一封信的时候。db文件一切正常,没有崩溃,但当我尝试打开该文件时,它会说:“无法打开数据库文件。原因是数据库磁盘映像格式不正确”

我正在电脑上使用python服务器 还有我手机上的安卓客户端(顺便说一句:我正在使用安卓 studio) 他们都在同一个无线网络上

Python服务器

import socket
TCP_IP = '192.168.14.87'
TCP_PORT = 9012

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(5)
print ('listening')
conn, addr=s.accept()
print ("Client connected: ",addr)
filename="trempi.db"
#file=open(filename, 'rb')
#file_data=file.read()
with open(filename, "rb") as f:
        bytes_read=f.read()
        if not bytes_read:
            break
        conn.sendall(bytes_read)    
conn.close()
print ("Data has been transmitted :)")

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);
        btn2=findViewById(R.id.btn2);
        btn.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v==btn2)
        {
            Intent go=new Intent(MainActivity.this,Data.class);
            startActivity(go);
        }
        if (v==btn)
        {
            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[20002];
                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();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

再次说明:其他文件类型已成功传输


共 (0) 个答案