读取和响应合起来出错了
服务器从客户端读取用户名,密码。没问题
服务器响应客户端,发送“欢迎您”。没问题
但读取用户名和密码之后响应“欢迎您”就会报错???!!!
为什么各自执行没问题合起来就出错了呢?(代码和老师的一样
服务器从客户端读取用户名,密码。没问题
服务器响应客户端,发送“欢迎您”。没问题
但读取用户名和密码之后响应“欢迎您”就会报错???!!!
为什么各自执行没问题合起来就出错了呢?(代码和老师的一样
2016-04-25
源码给你
客户端:
package com.imooc.ServerAndClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) throws UnknownHostException { try { // 创建socket,指定服务器端的ip地址和端口 Socket socket = new Socket("localhost", 6666); // 获取输出流,向服务器端发送信息 OutputStream outputStream = socket.getOutputStream(); // 将输出流转换成打印流 PrintWriter pw = new PrintWriter(outputStream); pw.print("用户名:root;密码:123"); pw.flush(); // 关闭socke流 socket.shutdownOutput(); // 开始读取客户端信息 InputStream inputStream = socket.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String info = null; while ((info = bufferedReader.readLine()) != null) { System.out.println("客户端接受服务器端信息:" + info); } // 关闭socke流 socket.shutdownInput(); //关闭其他资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); pw.close(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
服务器端:
package com.imooc.ServerAndClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 实现基于TCP协议的Socket通信--Server服务端 * * @author ykp * */ public class Server { public static void main(String[] args) { try { // 创建一个服务器端的Socket实例 ServerSocket serverSocket = new ServerSocket(6666); System.out.println("服务器即将启动,等待客户端连接...."); // 调用accept()方法监听端口,等待客户端的连接 Socket socket = serverSocket.accept(); // 获取输入流,读取客户端信息 InputStream inputStream = socket.getInputStream(); // 将字节流转换成字符流 InputStreamReader inputStreamReader = new InputStreamReader( inputStream); // 给字符输入流添加缓冲 BufferedReader bufferedReader = new BufferedReader( inputStreamReader); String info = null; while ((info = bufferedReader.readLine()) != null) { System.out.println("服务器接受客户端信息:" + info); } // 关闭socket输出流和socket输入流 socket.shutdownInput(); // 服务器向客户端发送信息 OutputStream outputStream = socket.getOutputStream(); PrintWriter pw = new PrintWriter(outputStream); pw.print("欢迎你!"); pw.flush(); // 关闭socket输出流和socket输入流 socket.shutdownOutput(); // 关闭其他资源 pw.close(); outputStream.close(); bufferedReader.close(); inputStreamReader.close(); inputStream.close(); //关闭socket socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
举报