gpt4 book ai didi

java - 服务器返回客户端想要的任何文件

转载 作者:行者123 更新时间:2023-12-03 11:55:22 25 4
gpt4 key购买 nike

我正在使用linux,并且我的服务器从客户端接收输入流,并且仅返回客户端从浏览器要求的文件。

它可以完美地编译,但是什么也不返回,我列出了我最后要运行的所有步骤以运行服务器并获取文件。

服务器

import java.io.*;
import java.net.*;

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;

try {
serverSocket = new ServerSocket(9999);
} catch (IOException ex) {
System.out.println("Can't setup server on this port number. ");
}

Socket socket = null;
InputStream in = null;
OutputStream out = null;

try {
socket = serverSocket.accept();
} catch (IOException ex) {
System.out.println("Can't accept client connection. ");
}

try {
in = socket.getInputStream();
} catch (IOException ex) {
System.out.println("Can't get socket input stream. ");
}

try {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = br.readLine();
System.out.println("File name = " + line);

//Deixem nomes el nom del File o fitxer
String fileName = line.replace("GET /", "");
fileName = fileName.replace(" HTTP/1.1", "");
System.out.println("File name is" + fileName);

out = new FileOutputStream(fileName);
} catch (FileNotFoundException ex) {
System.out.println("File not found. ");
}

byte[] bytes = new byte[16*1024];

int count;
while ((count = in.read(bytes)) > 0) {
out.write(bytes, 0, count);
System.out.println("Bytees "+count);
}

out.close();
in.close();
socket.close();
serverSocket.close();
}
}

如您所见,我正在使用方法replace()仅保留fileName。客户端将是要求提供文件的浏览器,例如:
  • 客户端需要一个文件hello.txt localhost:9999/hello.txt
  • 服务器位于名称为 Server的java/bin文件夹中。class
  • 文件 hello.txt 位于Java/文件


  • 这是我从控制台执行服务器的方式:
  • cd java/文件
  • java -cp ../bin服务器[-p 9999]

  • 但是我为什么没有收到任何文件?难道我做错了什么??

    最佳答案

    首先,请听乔恩·斯凯特(Jon Skeet)的建议

    其次,如果您正在学习,请遵循以下步骤
    writing and reading using socket

    问题是您尝试写入的不是写入套接字流,而是写入文件
    当然,如果您想使用http服务器。你可以检查这个simple http server question

    其他问题:
    您必须读取文件以进行流式传输,最好编写响应头。
    您的服务器将仅处理一个不正确的请求。您应忽略路径,仅允许下载特定格式。您的 try catch 块被滥用。

    关于java - 服务器返回客户端想要的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826668/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com