2016-03-02 130 views
0

我能够通过套接字发送文件并在其他端接收文件。现在我想发送甚至文件名,以便接收文件并从套接字保存文件后,我可以保存文件的名称。如何才能在客户端添加到发送的文件名和服务器提前收到文件名感谢所有Android通过套接字通信发送文件名

Client.java

try { 

       clientSocket = new Socket(targetIP, port); 
       os = clientSocket.getOutputStream(); 
       PrintWriter pw = new PrintWriter(os); 


       InputStream is = clientSocket.getInputStream(); 
       InputStreamReader isr = new InputStreamReader(is); 
       BufferedReader br = new BufferedReader(isr); 

       signalActivity("About to start handshake"); 

       byte[] buffer = new byte[4096]; 

       FileInputStream fis = new FileInputStream(fileToSend); 
       BufferedInputStream bis = new BufferedInputStream(fis); 
       // long BytesToSend = fileToSend.length(); 

       while(true) 
       { 

        int bytesRead = bis.read(buffer, 0, buffer.length); 

        if(bytesRead == -1) 
        { 
         break; 
        } 

        //BytesToSend = BytesToSend - bytesRead; 
        os.write(buffer,0, bytesRead); 
        os.flush(); 
       } 
       fis.close(); 
       bis.close(); 

       br.close(); 
       isr.close(); 
       is.close(); 

       pw.close(); 
       os.close(); 

       clientSocket.close(); 


      } catch (IOException e) { 
      } 
      catch(Exception e) 
      { 

      } 

Server.java

try { 



      welcomeSocket = new ServerSocket(port); 

      while(true && serviceEnabled) 
      { 

       socket = welcomeSocket.accept(); 

       InputStream is = socket.getInputStream(); 
       InputStreamReader isr = new InputStreamReader(is); 
       BufferedReader br = new BufferedReader(isr); 

       OutputStream os = socket.getOutputStream(); 
       PrintWriter pw = new PrintWriter(os); 


       String inputData = ""; 

//    String savedAs = "WDFL_File_" + System.currentTimeMillis(); 

//save the original name and extention 

       File file = new File(saveLocation, savedAs); 

       byte[] buffer = new byte[4096]; 
       int bytesRead; 

       FileOutputStream fos = new FileOutputStream(file); 
       BufferedOutputStream bos = new BufferedOutputStream(fos); 

       while(true) 
       { 
        bytesRead = is.read(buffer, 0, buffer.length); 
        if(bytesRead == -1) 
        { 
         break; 
        } 
        bos.write(buffer, 0, bytesRead); 
        bos.flush(); 

       } 

       bos.close(); 
       socket.close(); 
       //Start writing to file 

      } 


     } catch (IOException e) { 

     } 
     catch(Exception e) 
     { 

     } 
+0

@Bhargav在哪里我没有得到你 – Payal

+0

@Bhargav从一个设备到另一个 – Payal

+0

不是你确实收到你的服务器上的文件'File file = new File(saveLocation,savedAs);'所以你过去另存为一些随机文件名称? – Bhargav

回答

0

您的客户端应该发送的文件名第一。之后,该文件的内容。

服务器应该首先读取文件名,以便文件的以下内容可以保存在相同的文件名下。