【问题标题】:sending an image from client to server in socket在套接字中将图像从客户端发送到服务器
【发布时间】:2017-10-22 15:43:16
【问题描述】:

我有这个代码从客户端发送一个文本文件并将它放在服务器端 如何修改此代码使其发送“png”类型的图像文件而不是发送文本文件..我如何使用字节来完成这项工作

在代码中,它复制文件内容并将其放入一个字符串中,然后他再次将其写入服务器端的一个新字符串中 客户端文件有多个文件,您将选择要复制的文本。

这是服务器代码

public static void main(String[] args){
    try{
        ServerSocket serverSocket = new ServerSocket(2012);
        System.out.print("Running");

        Socket socket= serverSocket.accept();
        System.out.println("Client connected");

        PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

        String dir = "C:\\Users\\alaqra senpai\\Desktop\\FTP";
        File f=new File(dir);
        File fl[]=f.listFiles();

        Arrays.sort(fl);

        int c=0;
        for(int i=0;i<fl.length;i++){
            if(fl[i].canRead() && (fl[i].toString().endsWith(".txt"))){
                c++;
            }
        }

        pw.println(" "+c+".txt file founde , listed A to z");

        for (int i=0;i<fl.length;i++){
            if((fl[i].toString().endsWith(".txt"))){
                pw.println(" "+(i) + " "+ fl[i].getName() + " " +fl[i].length()+"byte");
            }
        }
        pw.println("_");
        pw.flush();
        String tem=br.readLine();
        int temp=Integer.parseInt(tem);

        temp-=48;
        System.out.println("index " +temp);

        boolean files=false;

        int index=0;
        if(temp>=0 && temp<=fl.length){
            files=true;
            index=temp;
        }else{
            files=false;
        }
        if(files){
            try{
                File ff=new File(fl[index].getAbsolutePath());
                FileReader fr=new FileReader(ff);
                BufferedReader brf=new BufferedReader(fr);
                String s;
                while((s=brf.readLine())!=null){
                    pw.println(s);
                }
                pw.flush();
                if(brf.readLine()!=null){
                    System.out.println("File read succeful,closing socket");
                }

            }catch(IOException e ){
                System.err.println("error"+e);
            }
        }
        br.close();
        socket.close();
    }catch(IOException e){

    }
}

这是客户端代码

    public static void main(String[] args){


    try {
        //declaration and initialization client socket
        Socket socket = new Socket(InetAddress.getByName("Localhost"), 2012);

        //read and write on socket
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        //read from console
        BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));

        String s;

        while ((br.read()) != '_') {
            System.out.println(br.readLine());

        }

        System.out.println("enter file index no: ");
        out.println(bu.read());

        //force write buffer
        out.flush();

        //file receive process


            try {

                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Recevie.png")));
                while ((s = br.readLine()) != null) {

                    bw.write(s);
                }
                //force write buffer to server
                bw.close();
                if (br.readLine() == null) {
                    System.out.println("File Write Successful,Socket closing");
                }

            } catch (Exception e) {
                System.out.println("Error" + e);
            }


    } catch (IOException ex) {
        Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
    }

}

【问题讨论】:

    标签: java sockets java-io


    【解决方案1】:

    使用 FileInputStream 和 BufferedInputStream 来作为图像是二进制文件。在此处查看有关使用流的更多信息 - http://tutorials.jenkov.com/java-io/index.html,很好地解释了 java io。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 2017-05-26
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多