读取和响应合起来出错了
服务器从客户端读取用户名,密码。没问题
服务器响应客户端,发送“欢迎您”。没问题
但读取用户名和密码之后响应“欢迎您”就会报错???!!!
为什么各自执行没问题合起来就出错了呢?(代码和老师的一样
服务器从客户端读取用户名,密码。没问题
服务器响应客户端,发送“欢迎您”。没问题
但读取用户名和密码之后响应“欢迎您”就会报错???!!!
为什么各自执行没问题合起来就出错了呢?(代码和老师的一样
 
                            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();
		}
	}
}举报