慕课网吧 关注:29,259贴子:29,920
  • 1回复贴,共1

慕课网中 网络编程中的一个问题 控制台老是无限循环输出!!

只看楼主收藏回复

Server.java:
/**
* 基于TCP协议的Socket通信,实现用户登陆
* 服务器端
*
*
*/
public class Server {
public static void main(String[] args) {
try {
//1.创建一个服务器端 制定绑定的端口
ServerSocket ser = new ServerSocket(8888);
//2.调用accept()方法开始监听,等待客户端的连接
System.out.println("服务器即将启动,等待客户端的连接");
Socket so = ser.accept();
//3.获取输入流,用来读取客户端信息
InputStream in =so.getInputStream();//字节流
InputStreamReader is = new InputStreamReader(in);//字符流
BufferedReader br = new BufferedReader(is);//添加缓冲流
String iin = br.readLine();
while(iin!=null&&iin.length()>0){ //循环读取客户端的信息
System.out.println(iin);
}
so.shutdownInput();//关闭输入流
//获取输出流,响应客户端的请求
OutputStream os = so.getOutputStream();
PrintWriter pw = new PrintWriter(os);//打印流
pw.write("欢迎登陆!");
pw.flush();
pw.close();
os.close();
br.close();
is.close();
in.close();
so.close();
ser.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client.java:
/**
* 客户端
*
*
*/
public class Client {
public static void main(String[] args) {
try {
//1.创建客户端Socket,指定服务器地址和端口
Socket so = new Socket("localhost",8888);
//2.获取输出流,像服务器端发送登陆信息
OutputStream os = so.getOutputStream();//字节流
PrintWriter pw = new PrintWriter(os); //将输出流包装为打印
pw.write("用户名:admin 密码:123");
pw.flush();
so.shutdownOutput();//关闭输出流
//读取输入流
InputStream is = so.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String into = br.readLine();
while(into!=null){
System.out.println(into);
}
pw.close();
os.close();
so.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


IP属地:重庆1楼2017-01-18 14:20回复
    nnnnnnnnnnnnnnnnnnnn


    3楼2019-06-26 17:44
    回复