会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132372个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/反射技术(旧) 3541楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/反射技术(旧) 3542楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 3544楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3545楼

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 基础深化和提高/手写服务器项目(旧) 3547楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 3548楼

老师我想使用客户端传字节数组,为什么服务器端能收到,服务器端发送内容客户端收不到,我只是调整了客户端发送字节数组,服务器端读取而已,不知道哪里出错了

public class TestClient {
	
	public static void main(String[] args) throws IOException {
		System.out.println("-------------------------客户端-------------------------");
		//9999是服务器端的端口号
		Socket socket=new Socket("localhost",9999);
		//创建输出流对象
		OutputStream outputStream = socket.getOutputStream();
		outputStream.write("欧阳娜娜".getBytes());
		//获取输入流对象
		InputStream inputStream = socket.getInputStream();
		int len=0;//字节长度
		byte[] bs=new byte[1024];//中转站
		while((len=inputStream.read(bs))!=-1) {
			System.out.println(new String(bs, 0, len));
		}
		//关流
		if(inputStream!=null) {
			inputStream.close();
		}
		if(outputStream!=null) {
			outputStream.close();
		}
		if(socket!=null) {
			socket.close();
		}
		
		
		
	}
}
public class TestServer {
	public static void main(String[] args) throws IOException {
		System.out.println("-------------------------服务器端-------------------------");
		ServerSocket serverSocket=new ServerSocket(19999);
		Socket client = serverSocket.accept();
		//获取输入流
		InputStream inputStream = client.getInputStream();
		int len=0;//字节长度
		byte[] bs=new byte[1024];//中转站
		while((len=inputStream.read(bs))!=-1) {
			System.out.println(new String(bs,0,len));
		}
		//获取输出流
		OutputStream outputStream = client.getOutputStream();
		outputStream.write("李沁".getBytes());
		//关流
		if(outputStream!=null) {
			outputStream.close();
		}
		if(inputStream!=null) {
			inputStream.close();
		}
		if(client!=null) {
			client.close();
		}
		
	}
}

效果图

image.png image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 3550楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3554楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 3555楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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