zoukankan      html  css  js  c++  java
  • 团队博客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) + "  发送完成");
                     
        }
  • 相关阅读:
    最近邻插值
    tp类型自动转换和自动完成
    tp读取器和写入器
    tp模型和数据库操作方法
    tp数据库操作
    tp请求和响应
    tp配置+路由+基本操作
    git的常见操作方法
    php 检查该数组有重复值
    公众号的TOKEN配置PHP代码
  • 原文地址:https://www.cnblogs.com/XJXYJ/p/5883438.html
Copyright © 2011-2022 走看看