使用socket服务开启一个Tcp server后开线程监听多个客户端的连接。要求服务器断开后,可以立即再启动。并且我断开服务器socket后,客户端能与服务器再联接,问各位高手,如何解决这个问题!例如:服务器端:package server;import java.net.*;
import java.io.*;public class MyServer extends Thread { /**
* @param args
*/
private Socket client;
public MyServer(Socket client){
this.client = client;
}
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println(str + " has receive....");
out.flush();
if(str.trim().equals("end"))
break;
}
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket server = new ServerSocket(9100);
while(true){
MyServer Multi = new MyServer(server.accept());
Multi.start();
} }
}客户端:package client;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;public class Client { /**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Socket client=new Socket(InetAddress.getLocalHost(),9100);
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.trim().equals("end")){
break;
}
System.out.println(in.readLine());
}
client.close();
}}
import java.io.*;public class MyServer extends Thread { /**
* @param args
*/
private Socket client;
public MyServer(Socket client){
this.client = client;
}
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println(str + " has receive....");
out.flush();
if(str.trim().equals("end"))
break;
}
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket server = new ServerSocket(9100);
while(true){
MyServer Multi = new MyServer(server.accept());
Multi.start();
} }
}客户端:package client;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;public class Client { /**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Socket client=new Socket(InetAddress.getLocalHost(),9100);
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.trim().equals("end")){
break;
}
System.out.println(in.readLine());
}
client.close();
}}
------------------------
什么意思?是不是就是说服务器重启一下和没重启前保持一样的状态?
在断开服务器连接前把各个客户端的套接字保存下来,然后重启后读那个状态然后恢复。
properties类。