java 浏览器发送传真_Web浏览器向自定义Java服务器发送多个请求 - java

作为一个更大的项目的一部分,我不得不制作一个自定义的Java线程池服务器。

自至少一个昼夜以来,我遇到了一个伤害我头部内神经元的问题。

我所做的很简单(在在线资源之后)。我有一个while循环,它会永远循环。发出一个请求,它接受它并将其发送到线程池(Java执行程序框架)。

protected ExecutorService threadPool = Executors.newFixedThreadPool(10);

while(! isStopped()){

Socket clientSocket = null;

try {

clientSocket = this.serverSocket.accept();

} catch (IOException e) {

if(isStopped()) {

System.out.println("Server Stopped.") ;

return;

}

throw new RuntimeException("Error accepting client connection", e);

}

this.threadPool.execute(

new Task(clientSocket,

"Test")

);

//System.out.println("Processed");

}

this.threadPool.shutdown();

无法获得更简单的权利吗?

也是Task类,只接受一个套接字,并写入它的输出流

public class Task implements Runnable{

protected Socket clientSocket = null;

protected String serverText = null;

public Task(Socket clientSocket, String serverText) {

this.clientSocket = clientSocket;

this.serverText = serverText;

}

public void run() {

try {

InputStream input = clientSocket.getInputStream();

OutputStream output = clientSocket.getOutputStream();

long time = System.currentTimeMillis();

output.write(("HTTP/1.1 200 OK\n\nWorkerRunnable: " +

this.serverText + " - " +

time +

"").getBytes());

output.close();

input.close();

System.out.println("Request processed: " + time);

} catch (IOException e) {

//report exception somewhere.

e.printStackTrace();

}

}

}

这是问题所在。

每当我在Chrome中编写localhost:9004时,即使我只打过一次URL,我也会在控制台上多次看到(请求处理时间)。

这怎么可能呢? 。发生什么情况是由于某种原因启动了对服务器的多个请求,或者Java Executor框架在这里出错,也许多次执行了一个请求? 。我不相信这两个原因中的任何一个都可以

火狐浏览器

当我从FF中访问url时,每次我访问服务器时,控制台上都会一次请求正确处理。 (很少有类似chrome的行为,就像在某些随机时刻一样,它针对单个URL命中显示两条请求处理的消息)

自定义Java客户端

当我从定制的Java客户端应用程序中访问URL时,服务器应用程序的控制台窗口正确地为每个请求显示一个“请求处理”标记。

我什至在URL循环中命中URL的速度都非常快10次,而且在服务器端我正确地收到了10条请求处理的消息

IE浏览器

和铬一样。

你们能为我提供一些有关情况的见解吗? 。对于这个问题的冗长,我深表歉意。

谢谢 。

java大神给出的解决方案

浏览器出于不同目的发出了多个请求。对于您所知道的普通HTTP请求,然后有一个if修改的请求,该请求仅应获取标头,最后是对网站图标的请求。

打印出浏览器发送的实际请求可能会启发您。 ;)

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…如何在Java中以语言环境正确的顺序格式化日期和月份? - java

有没有一种方法可以用Java / Kotlin中的区域设置正确的格式格式化日和月(以紧凑格式)而不格式化年份?因此,对于英语,应为“ 9月20日”,而对于瑞典语为“ 9月20日”。为了进行比较,在Cocoa平台上,我可以执行以下操作(在Swift中):let formatter = DateFormatter() formatter.locale = Loc…如何修改休眠的SQL查询? - java

我有点好奇,有没有办法修改hibernate的核心,以便我可以自定义生成的SQL query。例如,在生成的查询中添加功能以使用connect by prior(oracle)或我要自定义的任何其他子句。 java大神给出的解决方案 起初,这样的问题总是在我心中敲响警钟。你被警告了...AFAIK,hibernate使用所谓的dialects进行特定的优化。…如何在JAVA中传递以逗号分隔的值作为函数参数的字符串 - java

我有一个可以接受任何数量的INTEGER参数的方法:pages(int,int...)此方法是选择PDF文件的某些页面。以以下字符串类型存储的书页:String pages = "1,2,3,6,9"; 我想将此字符串作为方法的参数看起来像:pages(1,2,3,6,9); java大神给出的解决方案 使用流可以很容易地做到这一点:St…用Java构建大批量数据处理工具 - java

Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。 3年前关闭。 Improve this question 我正在尝试使用Java构建ETL工具。 ETL工具用于对大量数据(关系型和其他类型)进行批量读取,…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值