求救:如何从控制台退出程序
编了一个程序,是一个Socket的Server端,用于不间断接收从clinet端来的数据;每监听到一个client端就开启一个线程接收数据,程序是用while循环不间断监听sockets的。现在偶想做一个server端的结束部分,当在控制台输入字母q时,server端退出,请问如何实现。谢谢。ps:因为这个程序想打成jar包放在linux上,在linux上运行,所以想加入退出程序的语句。谢谢。程序源代码如下
import java.io.*;
import java.net.*;
import java.util.*;
public class JavaServer {
public static void main(String[] args) throws Exception
{
System.out.println("Server starting....");
ServerSocket server=new ServerSocket(2005);
int num=0;
while(true)
{
Socket s;
s=server.accept();
System.out.println("Accepting Connection...");
num=num+1;
new ServerThread(s,num).start();
}
}
}
class ServerThread extends Thread
{
Socket s;
int sumClient;
public ServerThread(Socket ts,int sc){
s = ts;
sumClient = sc;
}
public void run(){
StringBuffer data = new StringBuffer();
String recv = "";
System.out.println("连接成功,正在接收数据...");
try{
BufferedReader sis = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter sos =new PrintWriter(s.getOutputStream());
recv = sis.readLine();
while(!recv.trim().equals("bye")){
data.append("客户"+sumClient+"在时间"+Calendar.getInstance().getTime().toString());
data.append("接收到数据:"+recv);
System.out.println(data.toString());
sos.println(data.toString());
sos.flush();
recv = sis.readLine();
data.setLength(0);
}
if(recv.trim().equals("bye"))
sos.println("bye");
sos.close();
sis.close();
s.close();
}catch(Exception e){}
}
}