作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用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();
}
}
localhost:9999/hello.txt
最佳答案
首先,请听乔恩·斯凯特(Jon Skeet)的建议
其次,如果您正在学习,请遵循以下步骤
writing and reading using socket
问题是您尝试写入的不是写入套接字流,而是写入文件
当然,如果您想使用http服务器。你可以检查这个simple http server question
其他问题:
您必须读取文件以进行流式传输,最好编写响应头。
您的服务器将仅处理一个不正确的请求。您应忽略路径,仅允许下载特定格式。您的 try catch 块被滥用。
关于java - 服务器返回客户端想要的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826668/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!