/**
* Description: 客户端
* Copyright (c) , 2016, Jansonxu
* This program is protected by copyright laws.
* Program Name:Client.java
* Date: 2016年1月28日
*
* @author 李阳
* @version : 1.0
*/
package LowerCodeForChat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
//1 构建一条客户端到网络的通路 PrintWriter
//2 构建一条网络到客户端的通路(BufferedReader)
//3 构建客户端控制台到内存 (BufferedReader)
//4 通过循环体 模拟与服务器回话
//循环体
// 从控制台读取 要给服务器说的话
// 将信息传递给服务器
// 读取服务器的信息并显示
Socket client=null;
BufferedReader brToServer=null;
try {
client=new Socket("127.0.0.1",7777);
PrintWriter pw =new PrintWriter(client.getOutputStream(),true);
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
brToServer=new BufferedReader(new InputStreamReader(System.in));
while(true) {
System.out.println("客户端对服务器说");
String info=brToServer.readLine();
//System.out.println(info);
pw.println(info);
System.out.print("服务器对客户端说:");
String info1=br.readLine();
System.out.println(info1);
if("exit".equals(info1)){
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(client!=null){
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}if(brToServer!=null){
try {
brToServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* Description: 服务器
* Copyright (c) , 2016, Jansonxu
* This program is protected by copyright laws.
* Program Name:TalkServer.java
* Date: 2016年1月28日
*
* @author 李阳
* @version : 1.0
*/
package LowerCodeForChat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TalkServer {
public static void main(String[] args) {
ServerSocket server=null;
BufferedReader toClientReader=null;
try {
// 1 服务器实例的构建
server=new ServerSocket(7777);
//获得来自客户端的实例 的对象
Socket client=server.accept();
// 2构建网络到服务器的通过 (通过网络字节输入流 封装成 带缓存的字符输入流)
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
// 3构建服务器端到客户端 或 网络的通路(通过网络字节输出流 封装了打印字符输出流)
PrintWriter pw=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
// 4 服务器端控制台 到服务器端内存
toClientReader=new BufferedReader(new InputStreamReader(System.in));
// 5 读取客户端信息
System.out.println(“来自客户端的信息是”);
String info=br.readLine();//读取来 就是String
System.out.println(info);
System.out.println(“服务器要对客户端说”);
// 6知道服务器 exit
String info1=”“;//服务器会阻塞 读到 内存中 再给变量
while(!”exit”.equals(info1=toClientReader.readLine())){ //每次都要发过去
pw.println(info1);// 此处一定 要 println 表示服务器这句话 说完,客户端那边就嫩readline 一行的内容,否则客户端
// 来自客户端的信息是
//就会阻塞下去 因为客户端不知道你这一行 说完了吗
//服务器 读取来自客户端的话语
System.out.print(“来自客户端的信息是”);
String info2=br.readLine();//读取来 就是String
System.out.println(info2);
System.out.print(“服务器对客户端说:”);
}
pw.println(info1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(toClientReader!=null){
try {
toClientReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}if(server!=null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}