客户端向服务器发送图片

6

我刚开始学习JAVA,请多多包涵。

我有一个服务器和一个客户端,它们可以成功连接到彼此和其他东西,但是客户端的一个功能是将图像发送到服务器。有人能提供这个功能的代码吗(使用JAVA编写,不是Web应用程序)。


我明白这不是一个网页应用。或者它是吗? - Jan Zyka
你使用的是什么类型的客户端/服务器?Web服务器?应用程序服务器?自己编写的?已安装的?请提供更多信息。 - Ocaso Protal
1
我想要Java代码 - 还有我想要一辆威龙... ;/ - n00b
1个回答

5

欢迎来到Java!

为了完成你手头的任务,你可以使用Sockets。

客户端代码:

function sendFile (String serverIp, int serverPort) {
    int i;
    FileInputStream fis = new FileInputStream ("/path/to/your/image.jpg");

    Socket sock = new Socket(serverIp, serverPort);
    DataOutputStream os = new DataOutputStream(sock.getOutputStream());
    while ((i = fis.read()) > -1)
        os.write(i);

    fis.close();
    os.close();
    sock.close();
}

服务器代码:

function listenForFile(int port) {
    ServerSocket socket = new ServerSocket(serverPort);
        while (true) {

            Socket clientSocket = socket.accept();

            DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
            FileOutputStream fout = new FileOutputStream("/path/to/store/image.jpg");
            int i;
            while ( (i = dis.read()) > -1) {
                fout.write(i);
            }

            fout.flush();
            fout.close();
            dis.close();
            clientSocket.close();
        }
}

请注意,在客户端调用sendFile()之前,必须先调用服务器方法listenForFile()。并且,服务器端口号必须在两侧相同。

抱歉,这段代码无法正常工作。它可以将客户端的图片发送到服务器,但在服务器系统中无法查看。 - V I J E S H
将其包装在BufferedOutputStream / BufferedInputStream中以获得更好的性能。 - Milde
@vijesh - 你有收到任何错误信息吗?或者你保存图像的文件无法查看? - Nishan
"function listenForFile(int port) { " - “function” 是 Java 的关键字吗?必须是 Java 10。 - Darin Cardin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接