Я нашел способ получить имя клиентской машины.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
Logger.getLogger(this.getClass()).warning("Inside Confirm Servlet");
response.setContentType("text/html");
String hostname = request.getRemoteHost(); // hostname
System.out.println("hostname"+hostname);
String computerName = null;
String remoteAddress = request.getRemoteAddr();
System.out.println("remoteAddress: " + remoteAddress);
try {
InetAddress inetAddress = InetAddress.getByName(remoteAddress);
System.out.println("inetAddress: " + inetAddress);
computerName = inetAddress.getHostName();
System.out.println("computerName: " + computerName);
if (computerName.equalsIgnoreCase("localhost")) {
computerName = java.net.InetAddress.getLocalHost().getCanonicalHostName();
}
} catch (UnknownHostException e) {
}
System.out.println("computerName: " + computerName);
}
Content-Disposition
). Поэтому он не знает, чтобы показать диалог файла. Заголовок Content-Length
устанавливается только в том случае, если весь ответ буферизирован (если вы никогда не сбрасываете) или если вы установили его самостоятельно. В этом случае вы можете и должны установить это самостоятельно; написать
response.AppendHeader("Content-Length", new FileInfo(path).Length.ToString());
Flush
внутри цикла, вы немедленно отправляете ответ по линии без какой-либо буферизации. Однако для повышения производительности вы можете использовать сжатие GZIP. Для # 3 вам нужно установить заголовок длины содержимого в вашем http-ответе. Многие из этих значений взяты из заголовков http.
Я полагаю, что вы можете изменить буферизацию, изменив свойство буферизации объекта ответа на false. Давно не делал этого, поэтому я не помню, что это может быть.