求救:如何从控制台退出程序

wj1122 2008-04-14 12:13:36
编了一个程序,是一个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){}
}


}
...全文
239 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是风 2008-04-14
  • 打赏
  • 举报
回复
APP_CLASS_NAME=ge.threatscan.gsmsmgwy.Initializer
你需要改下。不好意思,那是我的启动class。
我是风 2008-04-14
  • 打赏
  • 举报
回复
在Linux上写个启动/停止的Shell脚本。给你个例子参考。
[code=BatchFile]#!/bin/bash
JAVA_HOME=XXX
APP_INSTALLATION_PATH=XXXX

APP_PID_FILE=$APP_INSTALLATION_PATH/XXXXX.pid
case "$1" in
start)
if [ -f $APP_PID_FILE ] ; then
pid=`cat $APP_PID_FILE`
if [ -n $APP_PID_FILE ] && kill -0 $pid ; then
echo "service is already running..."
exit 0
fi
fi
APP_JARS=`ls $APP_INSTALLATION_PATH/*.jar | xargs | sed 's/ /\:/g'`
APP_CLASS_NAME=ge.threatscan.gsmsmgwy.Initializer
export LD_LIBRARY_PATH=$APP_INSTALLATION_PATH
nohup $JAVA_HOME/bin/java -cp $APP_JARS $APP_CLASS_NAME &
pid=$!
echo $pid > $APP_PID_FILE
;;
stop)
[ ! -f $APP_PID_FILE ] && {
echo "pid file is missing, the service cannot be stopped"
exit 1
}
echo "shutting down the service..."
kill -9 $(cat $APP_PID_FILE)
rm -f $APP_PID_FILE
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 <start|stop|restart>"
exit 1
esac
exit 0[/code]
AwL_1124 2008-04-14
  • 打赏
  • 举报
回复
学习中。·
wj1122 2008-04-14
  • 打赏
  • 举报
回复
谢谢楼上的,请问如果在源程序中加入退出语句的话,应怎样做

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧