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

来源:3-3 编程实现基于 TCP 的 Socke t通信之客户端

遇见花开遇见你啊

2017-02-06 14:21

http://img.mukewang.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();
		}
	}

}


写回答 关注

2回答

  • qq_倔強人生_0
    2017-02-06 15:25:03
    已采纳

     String buffer = br.readLine();

                while (buffer != null) {

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

                }

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

  • qq_呵呵_5
    2017-06-17 10:52:45


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


Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题