客户端http从服务器获取图片保存到指定位置

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.awt.geom.AreaOp;

public class HttpUils {

    private static String URL_PATH = "http://192.168.70.65:8080/myhttp/pro.png";//服务器下

    public HttpUils() {
    }

    public static void  saveImageToDisk() {
        InputStream inputStream = getInputStream();
        byte[] data = new byte[1024];
        int len = 0;
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream("E:\\test.png");
            while (inputStream.read(data) != -1) {
                fileOutputStream.write(data, 0, len);
            }
        } catch (IOException ex) {
            Logger.getLogger(HttpUils.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException ex) {
                    Logger.getLogger(HttpUils.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            if (fileOutputStream != null) {
                try {
                    fileOutputStream.close();
                } catch (IOException ex) {
                    Logger.getLogger(HttpUils.class.getName()).log(Level.SEVERE, null, ex);
                }

            }

        }

    }

    public static InputStream getInputStream() {
        InputStream inputStream = null;
        HttpURLConnection httpURLConnection = null;
        try {
            URL url = new URL(URL_PATH);
            if (url != null) {
                httpURLConnection = (HttpURLConnection) url.openConnection();
                //设置连接网络的超时时间
                httpURLConnection.setConnectTimeout(3000);
                httpURLConnection.setDoInput(true);
                //设置本次http请求使用get请求方式
                httpURLConnection.setRequestMethod("GET");
                int responsecode = httpURLConnection.getResponseCode();
                if (responsecode == 200) {
                    //从服务器获得一个输入流
                    inputStream = httpURLConnection.getInputStream();
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(HttpUils.class.getName()).log(Level.SEVERE, null, ex);
        }
        return inputStream;
    }
    
    public  static void main(String argString[]){
        //从服务器获得图片保存到本地
        saveImageToDisk();
    }
}

在C#中,通过TCP协议创建一个服务器并向客户端发送图片通常涉及以下几个步骤: 1. **设置TCP服务器**: - 使用`System.Net.Sockets`命名空间下的`TcpListener`类创建一个监听器,绑定特定的IP地址和端口。 ```csharp TcpListener server = new TcpListener(IPAddress.Any, yourPort); ``` 2. **连接管理**: - 当有客户端连接时,监听器会引发事件,你需要处理该事件并获取客户端套接字。 ```csharp server.Start(); TcpClient client = server.AcceptTcpClient(); ``` 3. **图片数据准备**: - 获取图片文件的数据流,可以使用`FileStream`或`MemoryStream`来存储图片内容。 ```csharp byte[] imageBytes = File.ReadAllBytes("path_to_your_image.jpg"); using (var memoryStream = new MemoryStream(imageBytes)) { // ... } ``` 4. **发送图片数据**: - 创建一个网络流,将内存流转换为TCP套接字,并发送数据。 ```csharp NetworkStream networkStream = client.GetStream(); networkStream.Write(imageBytes, 0, imageBytes.Length); ``` 5. **关闭连接**: - 发送完数据后记得关闭套接字和监听器。 ```csharp networkStream.Close(); client.Close(); server.Stop(); ``` 6. **在客户端接收并保存图片**: - 客户端需要有一个程序段来接收数据,然后将其保存指定位置。这通常是读取接收到的数据流直到结束。 注意:由于TCP是基于字节流的协议,发送的是原始二进制数据,因此接收方需要能够解析这些数据以便于解码成图片
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值