为了账号安全,请及时绑定邮箱和手机立即绑定

当服务器端用String buffer = br.readLine(); while(buffer != null){ System.out.println(buffer)}就出现了这种一直打印的情况

http://img1.sycdn.imooc.com//589815060001ab7210640247.jpg

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerSocketTest {
	public static void main(String[] args) {
		try {
			ServerSocket serverSocket = new ServerSocket(8888);
			System.out.println("============服务器即将启动,等待客户端的链接请求===============");
			Socket socket = serverSocket.accept();
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String buffer = br.readLine();
			while (buffer != null) {
				System.out.println("我是服务器端,客户端向我发送信息为: " + buffer);
			}
			socket.shutdownInput();
			
			br.close();
			isr.close();
			is.close();
			socket.close();
			serverSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
package com.unit02;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest {
	public static void main(String[] args) {
		try {
			Socket socket = new Socket("localhost", 8888);
			OutputStream os = socket.getOutputStream();
			PrintWriter pw = new PrintWriter(os);
			pw.write("用户名: admin; 密码: 123");
			pw.flush();
			socket.shutdownOutput();
			
			pw.close();
			os.close();
			socket.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


正在回答

3 回答

 String buffer = br.readLine();

            while (buffer != null) {

                System.out.println("我是服务器端,客户端向我发送信息为: " + buffer);

            }

这句话有问题了,buffer在读取玩br.readLine(),的时候就是已经有数值了,你在循环的时候已经进入了while(1)z这样的情况,他是不会跳出循环的,所以一直在重复打印

0 回复 有任何疑惑可以回复我~


String buffer=br.readLine();
while(br.readline()!=null){
     buffer=br.readLine();
     System.out.println("我是服务器端,客户端向我发送信息为: " + buffer);


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

当服务器端用String buffer = br.readLine(); while(buffer != null){ System.out.println(buffer)}就出现了这种一直打印的情况

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信