Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过网络发送文件仅适用于文本文件_Java_Android_Sockets_Networking - Fatal编程技术网

Java 通过网络发送文件仅适用于文本文件

Java 通过网络发送文件仅适用于文本文件,java,android,sockets,networking,Java,Android,Sockets,Networking,我正试图通过局域网将文件从我的PC发送到我的Android手机 客户端(发送方,PC): 服务器(接收器、电话): 如果我在我的homedir中创建了一个名为test的文本文件,它工作正常,文件到达时没有错误。。。但是,如果我用其他媒体(即图片和音乐(我试过JPG和MP3))替换文本,文件就会损坏 将它们与hexedit中的原始文件进行比较,我注意到在发送音乐文件时,问题是一些字节丢失了;文件的前几个字节正常,但随后开始丢失字节 发送JPG时,大多数字节都是错误的。甚至前四个字节也从FF D8

我正试图通过局域网将文件从我的PC发送到我的Android手机

客户端(发送方,PC):

服务器(接收器、电话):

如果我在我的homedir中创建了一个名为
test
的文本文件,它工作正常,文件到达时没有错误。。。但是,如果我用其他媒体(即图片和音乐(我试过JPG和MP3))替换文本,文件就会损坏

将它们与hexedit中的原始文件进行比较,我注意到在发送音乐文件时,问题是一些字节丢失了;文件的前几个字节正常,但随后开始丢失字节

发送JPG时,大多数字节都是错误的。甚至前四个字节也从
FF D8 FF E0
更改为
FD


我做错了什么?如何通过本地网络发送非文本文件?

请看这里,谢谢,它正在工作。。。
public class Client {

    public static void main(String[] args) {

    String host = "192.168.0.108"; //IP of phone (I know, hardcoding is evil...)
    int port = 19999;
    String TimeStamp;
    Socket con;
    File f = new File("/home/sebastian/test");

    try {
        InetAddress address = InetAddress.getByName(host);
        con = new Socket(address, port);
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }    

    Thread t = new Thread(new Runnable() {

    @Override
        public void run() {
        try {
            BufferedInputStream fis = new BufferedInputStream(new FileInputStream(f));
            BufferedOutputStream bos = new BufferedOutputStream(con.getOutputStream());
            int i;
            System.out.println("Starting transmission");
            while ((i = fis.read()) != -1) {
                bos.write(i);
            }
            System.out.println("Finished");
            bos.flush();
            fis.close();
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }}

    });
    t.start();
    }
}
class Server extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startserver();
    }

    private void startserver() {
    try {
        socketl = new ServerSocket(port, 0, InetAddress.getByName("192.168.0.108"));
        Thread t = new Thread (new Runnable() {

            @SuppressLint("SdCardPath")
            @Override
            public void run() {
                while (true) {
                    try {
                        connection = socketl.accept();
                        BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
                            InputStreamReader isr = new InputStreamReader(is);
                            instr = new StringBuffer();
                            int i;
                            File f = new File("/sdcard/jaisb/streamtest");
                            f.delete();
                            f.createNewFile();
                            Log.d("log", "file created");
                            FileOutputStream fos = new FileOutputStream(f);
                            while ((i = isr.read()) != -1) {
                                fos.write(i);
                        }
                        Log.d("log", "file written");
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }

        });
    t.start();
    }

}