Server
package org.zbq;
import java.net.ServerSocket;
import java.net.Socket;
public class Server{
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8888);
Socket client = null;
boolean flag = true;
while(flag){
System.out.println("Server alread run, waiting for client!");
client = server.accept();
EchoThread echo = new EchoThread(client);
new Thread(echo).start();
}
server.close();
}
}
处理聊天的线程类
package org.zbq;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class EchoThread implements Runnable {
private Socket client;
public EchoThread(Socket client){
this.client = client;
}
@Override
public void run() {
BufferedReader buf = null;
PrintStream out = null;
try{
out = new PrintStream(this.client.getOutputStream());
buf = new BufferedReader(new InputStreamReader(this.client.getInputStream()));
boolean flag = true;
while(flag){
String str = buf.readLine();
if(null == str){
flag = false;
}else{
if("bye".equals(str)){
flag = false;
}else{
str = "Echo:" + str + "\n";
out.write(str.getBytes());
}
}
}
this.client.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
Client
package org.zbq;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
/**
* @param args
* @throws Exception
* @throws UnknownHostException
*/
public static void main(String[] args) throws Exception {
Socket client = new Socket("127.0.0.1", 8888);
BufferedReader buf = null;
PrintStream out = null;
BufferedReader input = null;
input = new BufferedReader(new InputStreamReader(System.in));
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintStream(client.getOutputStream());
boolean flag = true;
while(flag){
System.out.print("Input:");
String str = input.readLine();
out.println(str);
if("bye".equals(str)){
flag = false;
}else{
String echo = buf.readLine();
System.out.println(echo);
}
}
buf.close();
client.close();
}
}