【问题标题】:Android sending file name via socket communication [duplicate]Android通过套接字通信发送文件名[重复]
【发布时间】:2016-03-02 17:39:16
【问题描述】:

我能够通过套接字发送文件并在其他端接收。现在我想发送偶数文件名,以便在接收文件并从套接字保存文件后,我可以保存文件名。在客户端添加什么来发送文件名和在服务器中添加什么来接收文件名提前谢谢大家

客户端.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)
            {

            }

服务器.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)
        {

        }

【问题讨论】:

  • @Bhargav 我没找到你
  • @Bhargav no 从一个设备到另一个
  • 不,是的,您确实在您的服务器上收到了文件File file = new File(saveLocation, savedAs);,所以您曾经保存为一些随机文件名?
  • @Bhargav 我知道我正在保存随机文本,但我想保存为带有扩展名的实际文本
  • 我认为这个答案应该是你的解决方案stackoverflow.com/a/15650962/4128945

标签: java android sockets android-networking


【解决方案1】:

您的客户应先发送文件名。之后是文件的内容。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2011-02-24
    • 2020-12-09
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多