package com.tcp;
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;
public class Server {
/**
* 服务器端
*
*/
public static void main(String[] args) {
int port = 8818;
try {
// 1.创建ServerSocket实例
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("***服务器即将启动,正在等待客户机连接***");
// 调用accept()方法接收来自客户机的Socket
Socket clintSocket = serverSocket.accept();
// 2.创建字节输入流
InputStream is = clintSocket.getInputStream();
// 创建字符输入流
InputStreamReader isr = new InputStreamReader(is);
// 给字符输入流创建缓冲
BufferedReader br = new BufferedReader(isr);
String date = null;
// 3.当读取数据不为空时,循环读取
while ((date = br.readLine()) != null) {
System.out.println("我是服务端,客户端连接成功!");
System.out.println("接收到登陆请求,验证信息如下:");
System.out.println(date);
}
// 4.返回给客户端反馈信息
OutputStream os = clintSocket.getOutputStream();
// 将输出流包装为打印流
PrintWriter pw = new PrintWriter(os);
pw.write("欢迎您,在渣男路上越走越远,登陆成功");
pw.flush();
// 5.关闭所有资源
//clintSocket.shutdownOutput();
pw.close();
os.close();
clintSocket.shutdownInput();// 关闭输入流
br.close();
isr.close();
is.close();
clintSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.tcp;
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.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
public class Clint {
/**
* 客户端
*
*/
public static void main(String[] args) {
String sss="用户名:在渣男路上越走越远 密码:123456";
try {
//1.创建客户端Socket
Socket socket = new Socket("localhost", 8818);
//2.创建输出流
OutputStream os=socket.getOutputStream();
//将输出流包装为打印流
PrintWriter pw=new PrintWriter(os);
//3.调用writer()方法写入内容
pw.write("用户名:在渣男路上越走越远 密码:123456");
pw.flush();
System.out.println("******登陆界面******");
System.out.println(sss);
System.out.println("正在请求登陆......");
//4.接收来自服务器的反馈信息
InputStream is=socket.getInputStream();
//创建字符输入流
InputStreamReader isr=new InputStreamReader(is);
//给字符输入流创建缓冲
BufferedReader br =new BufferedReader(isr);
String date1 = null;
//当读取数据不为空时,循环读取
while ((date1 = br.readLine()) != null) {
System.out.println(date1);
}
//5.关闭资源
//socket.shutdownInput();//关闭输入流
br.close();
isr.close();
is.close();
socket.shutdownOutput();
pw.close();
os.close();
//socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
你应该在客户端进行输出流完成之后就应该socket.shutdownOutput();而不是在最后才执行