双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

java写的简单的HTTP服务器,firefox下访问时会提示连接被重置

wuliuxu wuliuxu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
使用java实现的HTTP服务器响应功能。但是在通过firefox反复刷新访问localhost:8416时,有时可以得到正常的响应,但更多的时候无法得到正常响应,浏览器显示连接被重置。

代码如下:

首先是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

weixin_38669628

彻底解决Burp Suite证书过期与Firefox HSTS警告的完整指南

HTTPS作为保障网络通信安全的核心协议,其安全基础建立在公钥基础设施(PKI)和证书信任链之上。中间人代理工具通过动态生成站点证书实现流量解密,这要求系统必须信任其根证书。当根证书过期时,整个信任链断裂,导致浏览器发出安全警告,测试工作受阻。在渗透测试与安全评估场景中,高效解决此类证书问题对保障测试连续性至关重要。本文聚焦于Burp Suite这一广泛使用的安全测试工具,针对其CA证书过期这一高频痛点,结合Firefox浏览器特有的HSTS策略,提供从诊断、证书重新生成与安装到HSTS记录清除的完整解决方

weixin_30562507

Firefox+Burpsuite+SwitchyOmega黄金组合:Web安全测试抓包环境搭建与配置实战

在Web安全测试与开发调试领域,抓包是分析网络通信、定位安全漏洞的基础技术。其核心原理是通过代理服务器作为中间人,拦截、查看和修改客户端与服务器之间的HTTP/HTTPS请求与响应。这项技术的价值在于能让安全研究人员和开发者透视应用的数据流,进行漏洞挖掘、接口调试和性能分析。典型的应用场景包括Web应用渗透测试、API接口调试、移动App流量分析等。要实现高效抓包,一个稳定且灵活的本地代理环境至关重要。本文聚焦于由Firefox浏览器、Burpsuite专业版及SwitchyOmega插件构成的经典组合,详

R芮R

Comet:基于_HTTP_长连接的“服务器推”技术

Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 Comet:基于_HTTP_长连接的“服务器推”技术 简介

Kxvzzz

JAVA服务器]用Java实现Web

JAVA服务器]用Java实现Web服务器

whalion
评论 19
收藏 已收藏
分享
返回顶部
wuliuxu
Java 51,407 成员 86,133 内容