一个简单的echo服务器,客户端向服务端发送消息,服务端进行响应,当客户端发送quit字符串时,断开客户端和服务端的连接。
服务端代码:
public class EchoClient_BIO {
private Socket socket;
public static void main(String[] args) {
new EchoClient_BIO().service();
}
public EchoClient_BIO(){
try {
System.out.println("正在连接服务器...");
socket = new Socket("localhost",8777);
System.out.println("服务器连接成功");
}catch (Exception e){
e.printStackTrace();
System.out.println("服务器连接失败");
}
}
private BufferedReader getReader(Socket socket) throws IOException {
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream(),"UTF-8"));
return br;
}
private PrintWriter getWriter(Socket socket) throws IOException {
PrintWriter pw= new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream(),"UTF-8"),true);
return pw;
}
public void service(){
BufferedReader br = null;
PrintWriter pw = null;
try {
br = getReader(socket);
pw = getWriter(socket);
Scanner scanner = new Scanner(System.in);
String sendMessage = null;
while ((sendMessage = scanner.nextLine()) != null) {
pw.println(sendMessage);
System.out.println(br.readLine());
if (sendMessage.equals("quit"))
break;
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
br.close();
pw.close();
socket.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
客户端代码:
public class EchoServer_BIO {
private ServerSocket serverSocket;
public static void main(String[] args) {
new EchoServer_BIO().service();
}
private EchoServer_BIO(){
try {
System.out.println("服务器正在启动");
serverSocket = new ServerSocket(8777);
System.out.println("服务器启动成功");
}catch (Exception e){
e.printStackTrace();
System.out.println("服务器启动失败");
}
}
private BufferedReader getReader(Socket socket) throws IOException {
BufferedReader br = new BufferedReader(
new InputStreamReader(
socket.getInputStream(),"UTF-8"));
return br;
}
private PrintWriter getWriter(Socket socket) throws IOException {
PrintWriter pw= new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream(),"UTF-8"),true);
return pw;
}
public void service(){
while (true){
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
try {
socket = serverSocket.accept();
br = getReader(socket);
pw = getWriter(socket);
String recMessage = null;
while ((recMessage = br.readLine()) != null){
System.out.println(recMessage);
if (recMessage.equals("quit")){
pw.println("bye");
break;
}else
pw.println("I am fine");
}
}catch (Exception e){
e.printStackTrace();
}finally {
if (socket!=null){
try {
socket.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
}
因为很简单,就不说什么了。