java写的简单的HTTP服务器,firefox下访问时会提示连接被重置
代码如下:
首先是main函数:
public static void main(String[] args) {
int port = 8416;
int backlog = 500;
int acceptCount = 0;
Socket serverSocket = null;
try {
ServerSocket httpServer = new ServerSocket(port, backlog);
System.out.println("server:httpy");
while(true){
// 从等待队列中取出一个连接请求,建立socket连接
serverSocket = httpServer.accept();
acceptCount ++;
// 对每次客户端的请求都使用一个独立的线程来响应
HttpResponse response = new HttpResponse(serverSocket);
Thread thread = new Thread(response);
thread.start();
// 打出服务端已经接受并处理请求数
System.out.println(acceptCount);
}
} catch (IOException e) {
e.printStackTrace();
}
}
然后是服务端进行响应的线程类(HttpResponse):
class HttpResponse implements Runnable{
// 与客户端进行连接的socket
Socket serverSocket = null;
// 回车换行
String crlf = "\r\n";
// 服务端进行响应的输出流
BufferedWriter responseWriter = null;
BufferedReader br = null;
HttpResponse(Socket _socket){
serverSocket = _socket;
}
public void run(){
response();
}
/**
* 对客户端请求进行响应的处理方法
*
* @param none
* @return none
*/
public void response(){
try{
responseWriter =
new BufferedWriter(
new OutputStreamWriter(
serverSocket.getOutputStream()));
// 服务端进行响应的响应内容
StringBuffer content = new StringBuffer();
content.append("<html>");
content.append("<head>");
content.append("<title>");
content.append("httpy web server");
content.append("</title>");
content.append("</head>");
content.append("<body>");
content.append("<div>");
content.append("<a>server:httpy</a>");
content.append("</div>");
content.append("</body>");
content.append("</html>");
// 服务端进行响应的响应头
StringBuffer header = new StringBuffer();
header.append("HTTP/1.1 200 OK");
header.append(crlf);
header.append("Content-Length:");
header.append(content.toString().getBytes("utf-8").length);
header.append(crlf);
header.append("Content-Type:text/html;UTF-8");
header.append(crlf);
header.append(crlf);
// 输出响应头
responseWriter.write(header.toString());
// 输出响应内容
responseWriter.write(content.toString());
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭资源连接
try {
if(responseWriter != null){
responseWriter.close();
}
if(serverSocket != null){
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
客户端访问
使用浏览器:firefox
访问地址 :localhost:8416
如果反复快速的进行访问(不管是反复回车请求,F5刷新请求,还是Ctrl + F5刷新请求),就会出现,有时浏览器得到正常页面显示,而更多的时候却显示连接被重置,不知道是什么原因导致的。
以下是页面正常显示的效果:

以下是请求异常的时候页面显示的效果:

另外,本人下载了一个java开源的HTTP服务器项目,在本机上测试时一切正常,排除浏览器,系统环境的影响。
相关推荐
访问网页,拦截http请求
NULL 博文链接:https://sunny-java-163-com.iteye.com/blog/486118
彻底解决Burp Suite证书过期与Firefox HSTS警告的完整指南
HTTPS作为保障网络通信安全的核心协议,其安全基础建立在公钥基础设施(PKI)和证书信任链之上。中间人代理工具通过动态生成站点证书实现流量解密,这要求系统必须信任其根证书。当根证书过期时,整个信任链断裂,导致浏览器发出安全警告,测试工作受阻。在渗透测试与安全评估场景中,高效解决此类证书问题对保障测试连续性至关重要。本文聚焦于Burp Suite这一广泛使用的安全测试工具,针对其CA证书过期这一高频痛点,结合Firefox浏览器特有的HSTS策略,提供从诊断、证书重新生成与安装到HSTS记录清除的完整解决方
Firefox+Burpsuite+SwitchyOmega黄金组合:Web安全测试抓包环境搭建与配置实战
在Web安全测试与开发调试领域,抓包是分析网络通信、定位安全漏洞的基础技术。其核心原理是通过代理服务器作为中间人,拦截、查看和修改客户端与服务器之间的HTTP/HTTPS请求与响应。这项技术的价值在于能让安全研究人员和开发者透视应用的数据流,进行漏洞挖掘、接口调试和性能分析。典型的应用场景包括Web应用渗透测试、API接口调试、移动App流量分析等。要实现高效抓包,一个稳定且灵活的本地代理环境至关重要。本文聚焦于由Firefox浏览器、Burpsuite专业版及SwitchyOmega插件构成的经典组合,详
Comet:基于_HTTP_长连接的“服务器推”技术
Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 简介
JAVA服务器]用Java实现Web
JAVA服务器]用Java实现Web服务器



