java 请求放入队列_关于javaWeb请求,如果1秒10000次,能不能通过web服务器配置同时请求为500个,其它请求放队列里面。...

关于javaWeb请求,如果1秒10000次,能不能通过web服务器配置同时请求为500个,其它请求放队列里面。

关注:75  答案:2  mip版

解决时间 2021-01-28 18:18

e6cb1a03ad541b3098697807b7bf1798.png

提问者挥映在沉默里的渲染

2021-01-27 22:15

一秒的请求为500,其它的请求放后面几秒时间去处理,以队列的方式。

能不能用tomcat、apache、nginx或其它方面的配置或框架能尽快的实现了。

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家看厌了山川

2021-01-27 22:33

不太可能,HTTP不可能无限的等待,很快会超时

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼心苍凉

2021-01-27 23:30

如何用java实现web服务器一、http协议的作用原理

www是以internet作为传输媒介的一个应用系统,www网上最基本的传输单位是web网页。www的工作基于客户机/服务器计算模型,由web浏览器(客户机)和web服务器(服务器)构成,两者之间采用超文本传送协议(http)进行通信。http协议是基于tcp/ip协议之上的协议,是web浏览器和web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。http协议的作用原理包括四个步骤:

(1)连接:web浏览器与web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2)请求:web浏览器通过socket向web服务器提交请求。http的请求一般是get或post命令(post用于form参数的传递)。get命令的格式为:

get路径/文件名http/1.0

文件名指出所访问的文件,http/1.0指出web浏览器使用的http版本。

(3)应答:web浏览器提交请求后,通过http协议传送给web服务器。web服务器接到后,进行事务处理,处理结果又通过http传回给web浏览器,从而在web浏览器上显示出所请求的页面。

例:假设客户机与www.mycompany.com:8080/mydir/index.html建立了连接,就会发送get命令:get/mydir/index.htmlhttp/1.0.主机名为www.mycompany.com的web服务器从它的文档空间中搜索子目录mydir的文件index.html.如果找到该文件,web服务器把该文件内容传送给相应的web浏览器。

为了告知web浏览器传送内容的类型,web服务器首先传送一些http头信息,然后传送具体内容(即http体信息),http头信息和http体信息之间用一个空行分开。

常用的http头信息有:

①http1.0200ok

这是web服务器应答的第一行,列出服务器正在运行的http版本号和应答代码。代码“200ok”表示请求完成。

②mime_version:1.0

它指示mime类型的版本。

③content_type:类型

这个头信息非常重要,它指示http体信息的mime类型。如:content_type:text/html指示传送的数据是html文档。

④content_length:长度值

它指示http体信息的长度(字节)。

(4)关闭连接:当应答结束后,web浏览器与web服务器必须断开,以保证其它web浏览器能够与web服务器建立连接。

二、java实现web服务器功能的程序设计

根据上述http协议的作用原理,实现get请求的web服务器程序的方法如下:

(1)创建serversocket类对象,监听端口8080.这是为了区别于http的标准tcp/ip端口80而取的;

(2)等待、接受客户机连接到端口8080,得到与客户机连接的socket;

(3)创建与socket字相关联的输入流instream和输出流outstream;

(4)从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:get路径/文件名http/1.0

(5)从请求信息中获取请求类型。如果请求类型是get,则从请求信息中获取所访问的html文件名。没有html文件名时,则以index.html作为文件名;

(6)如果html文件存在,则打开html文件,把http头信息和html文件内容通过socket传回给web浏览器,然后关闭文件。否则发送错误信息给web浏览器;

(7)关闭与相应web浏览器连接的socket字。

下面的程序是根据上述方法编写的、可实现多线程的web服务器,以保证多个客户机能同时与该web服务器连接。

程序1:webserver.java文件

//webserver.java用java编写web服务器

importjava.io.*;

importjava.net.*;

publicclasswebserver{

publicstaticvoidmain(stringargs[]){

inti=1,port=8080;

serversocketserver=null;

socketclient=null;

try{

server=newserversocket(port);

system.out.println("webserverislisteningonport"+server.getlocalport());

for(;;){client=server.accept();//接受客户机的连接请求

newconnectionthread(client,i)。start();

i++;

}

}catch(exceptione){system.out.println(e);}

}

}

classconnectionthreadextendsthread{

socketclient;//连接web浏览器的socket字

intcounter;//计数器

publicconnectionthread(socketcl,intc){

client=cl;

counter=c;

}

publicvoidrun()//线程体

{try{

stringdestip=client.getinetaddress()。tostring();//客户机ip地址

intdestport=client.getport();//客户机端口号

system.out.println("connection"+counter+":connectedto"+destip+"onport"+destport+".");

printstreamoutstream=newprintstream(client.getoutputstream());

datainputstreaminstream=newdatainputstream(client.getinputstream());

stringinline=instream.readline();//读取web浏览器提交的请求信息

system.out.println("received:"+inline);

if(getrequest(inline)){//如果是get请求

stringfilename=getfilename(inline);

filefile=newfile(filename);

if(file.exists()){//若文件存在,则将文件送给web浏览器

system.out.println(filename+"requested.");

outstream.println("http/1.0200ok");

outstream.println("mime_version:1.0");

outstream.println("content_type:text/html");

intlen=(int)file.length();

outstream.println("content_length:"+len);

outstream.println("");

sendfile(outstream,file);//发送文件

outstream.flush();

}else{//文件不存在时

stringnotfound="

error404-filenotfound

";

outstream.println("http/1.0404nofound");

outstream.println("content_type:text/html");

outstream.println("content_length:"+notfound.length()+2);

outstream.println("");

outstream.println(notfound);

outstream.flush();

}

http://java.chinaitlab.com/advance/519981.html

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值