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