编写思路
1,ServerSocket 要同多个客户端进行通讯,需要循环调用ServerSocket.accept()方法。
2,服务器与客户断的会话需要在独立的线程中运行。
2,一个客户端需要跟一个服务器接收端进行连接,共同完成会话。
import java.net.*;
import java.io.*;
public class ReverseSever {
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args) {
try{
ServerSocket ss = new ServerSocket(8001);
boolean beRunning = true;
while(beRunning){
Socket s = ss.accept();
new Thread(new Servicer(s)).start();
}
ss.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.net.*;
import java.io.*;
class Servicer implements Runnable{
private Socket s = null;
/**
* Method run
*
*
*/
public void run(){
try{
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os,true);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while(true){
String strLine = br.readLine();
if(strLine.equalsIgnoreCase("quit")){
break;
}
String strEcho = (new StringBuffer(strLine).reverse()).toString();
pw.println(strLine+"---->"+strEcho);
}
br.close();
pw.close();
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public Servicer(Socket s){
this.s = s;
}
}
测试的时候可以通过telnet [ipaddress] [ port] 命令后,输入参数来验证。