会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132485个问题
JAVA 全系列/第六阶段:项目管理与SSM框架/Spring 14191楼
JAVA 全系列/第九阶段:Spring Boot实战/Spring Boot 14192楼

web浏览器提交请求后,服务器端收到请求,但是服务器端一直阻塞,使用数据流一直卡着,麻烦看看原因

package com.bzsxt.server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;

import com.bzsxt.chat.CloseUtil;

/*
 *  #通过web页面提交数据时候,提交数据没有换行标识,所以用缓冲流读取不到换行.
 * */
public class Server3 {

	public static void main(String[] args) {
		ServerSocket server = null;
		Socket socket = null;
		BufferedReader bReader = null;
		BufferedWriter bWriter = null;
		String CRLF="\r\n";//换行
		String BLANK=" ";//空格

		try {
			server = new ServerSocket(8080);
			System.out.println("服务端开启");
			socket = server.accept();
			byte [] bs = new byte [20480];
			
			DataInputStream dataInputStream= new DataInputStream(socket.getInputStream());
			int len = -1;
			while ((len=dataInputStream.read(bs, 0, bs.length))!=-1) {
				System.out.println(new String(bs, 0, len, "utf-8"));
			}
			System.out.println("game over -----------");
			
			/**对Web浏览器的请求作出响应*/
			StringBuilder sb=new StringBuilder();
			StringBuilder sbContent=new StringBuilder();//响应的文本
			sbContent.append("<html><head><title>响应结果</title></head>");
			sbContent.append("<body>登录成功</body></html>");
			
			//(1)拼接响应头
			sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
			sb.append(CRLF);//换行
			sb.append("Content-Type: text/html;charset=utf-8");
			sb.append(CRLF);//换行
			sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
			sb.append(CRLF);//换行,代表响应头与响应的正文部门之间的空行
			sb.append(sbContent);
			
			//通过流输出 
			bWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
			bWriter.write(sb.toString());
			bWriter.flush();
			bWriter.close();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			CloseUtil.close(bReader, socket, server);
		}
	}
}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 14193楼
Python 全系列/第一阶段:Python入门/编程基本概念 14194楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 14195楼
Python 全系列/第五阶段:数据库编程/MySQL数据库的使用 14196楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 14197楼
Python 全系列/第九阶段:前端进阶-高效开发Vue框架/ES6新特性 14200楼
Python 全系列/第二十阶段:数据分析-统计分析/描述统计 14201楼
JAVA 全系列/预科阶段:职业规划/学习方法/程序员的基本素养和职业规划 14202楼
JAVA 全系列/第六阶段:项目管理与SSM框架/Maven 14203楼
Python 全系列/第二阶段:Python 深入与提高/异常机制 14204楼

屏幕截图 2024-05-27 141308.png

JAVA 全系列/第二十阶段:租房网(Spring Cloud最新架构)/Livegoods房屋海选平台 14205楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637