• 团队博客16


          今天实现了在同一WiFi网络下通过IP地址对图片的传输,但是只能传输小于1M的图片,对于超过1M的图片会因为连接时间过长而超时,不能传送成功。如果解决了大图片的传输问题,那么视频和音频是不是也就能很好的进行传输了呢?

          下面是传输小图片的代码(简单易懂,效率不太好):

          代码引用于:http://blog.csdn.net/yuankundong/article/details/51489823

          接收端:

    public void ReceiveFile(){
            try{
                Socket name = server.accept();
                InputStream nameStream = name.getInputStream();
                InputStreamReader streamReader = new InputStreamReader(nameStream);
                BufferedReader br = new BufferedReader(streamReader);
                String fileName = br.readLine();
                br.close();
                streamReader.close();
                nameStream.close();
                name.close();
                SendMessage(0, "正在接收:" + fileName);
    
                Socket data = server.accept();
                InputStream dataStream = data.getInputStream();
                String savePath = Environment.getExternalStorageDirectory().getPath() + "/" + fileName;
                File f=new File(savePath);
                int i=0;
                while(f.exists())
                {//如果上传的文件发生重名,进行改名   
                    i++;
                    fileName = fileName.substring(0, fileName.indexOf(".")-1)+""+i+""+ fileName.substring(fileName.indexOf(".")); 
                    savePath = Environment.getExternalStorageDirectory().getPath() + "/" + fileName;
                    f=new File(savePath);
                }
                FileOutputStream file = new FileOutputStream(savePath, false);
                byte[] buffer = new byte[1024];
                int size = -1;
                while ((size = dataStream.read(buffer)) != -1){
                    file.write(buffer, 0 ,size);
                }
                file.close();
                dataStream.close();
                data.close();
                SendMessage(0, fileName + "接收完成");
                
        }

         发送端:

    public void SendFile(ArrayList<String> fileName,ArrayList<String> path, String ipAddress, int port){
            try {
                for (int i = 0; i < fileName.size(); i++){
                    
                    Socket name = new Socket(ipAddress, port);
                    OutputStream outputName = name.getOutputStream();
                    OutputStreamWriter outputWriter = new OutputStreamWriter(outputName);
                    BufferedWriter bwName = new BufferedWriter(outputWriter);
                    bwName.write(fileName.get(i));
                    bwName.close();
                    outputWriter.close();
                    outputName.close();
                    name.close();
                    SendMessage(0, "正在发送" + fileName.get(i));
    
                    Socket data = new Socket(ipAddress, port);
                    OutputStream outputData = data.getOutputStream();
                    FileInputStream fileInput = new FileInputStream(path.get(i));
                    
                    int size = -1;
                    byte[] buffer = new byte[1024];
                    while((size = fileInput.read(buffer, 0, 1024)) != -1){
                        outputData.write(buffer, 0, size);
                    }
                    outputData.close();
                    fileInput.close();
                    data.close();
                    SendMessage(0, fileName.get(i) + "  发送完成");
                     
        }
  • 相关阅读:
    笨办法06字符串(string)和文本
    react学习之路-配制antd-mobile
    react.js学习之路六
    bug
    react.js学习之路五
    react.js学习之路四
    react.js学习之路三
    react.js学习之路二
    react.js学习之路一
    MVC,MVP 和 MVVM 的区别之处
  • 原文地址:https://www.cnblogs.com/XJXYJ/p/5883438.html
Copyright © 2020-2023  润新知