Start/Stop Java 来自网络的应用程序 ui
Start/Stop Java app from web ui
我在 Java 中编写了一个 IRC Bot,我一直在寻找一种方法来启动和停止整个程序 PHP。
我考虑过使用 exec() 来启动它,并使用套接字侦听器使其退出,但我以前从未使用过套接字侦听器,更不用说从 PHP!
(运行 在 windows 服务器上,没有屏幕请)
有什么想法吗? (示例?链接?)
谢谢大家。
编辑:一位朋友反驳了我的想法,有没有什么方法可以通过向 Java 程序发送 POST 或 GET 数据来使程序停止?
只是各种其他选项的建议...
继续从套接字读取传入请求...在端口 9000 上说并解析请求。
因此,例如您收到请求参数说:stop_server=true 然后在读取此类参数时通过调用
停止 java 程序
System.exit(1);
这里有一些供参考。
1.) 在非标准端口上打开套接字。
server_socket = new ServerSocket(9090, 0, localhost);
2.) 现在开始听。
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
while (true) {
client = server_socket.accept();
Log.v("test","accepted");
IncomingMessage incomingMessage=new IncomingMessage(client);
incomingMessage.processMessage();
}
} catch (Exception e) {
// TODO: handle exception
Log.v("Exception", "", e);
}
}
}).start();
3.) 现在解析您的请求。
streamReader = new InputStreamReader(incomingStream.getInputStream());
reader = new BufferedReader(streamReader);
while ((str1 = reader.readLine()).startsWith("GET")) {
if (str1.contains("phone")
& str1.contains("LOCATION=false")) {
String params = str1.substring(5);
Log.d("substring", params);
String paramStart = params.substring(1,
"phone".length() + 13);
Log.d("substring-", paramStart);
smsNumber = paramStart.split("=")[1];
} else if (str1.contains("LOCATION=true")
& str1.contains("phone")) {
String params = str1.substring(5);
Log.d("substring", params);
String paramStart = params.substring(1,
"phone".length() + 13);
smsNumber = paramStart.split("=")[1];
LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
String provider = manager.getBestProvider(criteria, true);
Location location = manager.getLastKnownLocation(provider);
double latitude = location.getLatitude();
double longitude = location.getLongitude();
CharSequence location_string = String.valueOf(latitude)
+ "," + String.valueOf(longitude).toString();
MESSAGE = MAP_LINk + location_string;
} else if (str1.contains("IMAGE=true")) {
try {
Camera mcamera = Camera.open();
mcamera.startPreview();
mcamera.takePicture(null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data,
Camera camera) {
// TODO Auto-generated method stub
File mpicture = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (mpicture == null) {
Log.d("*************",
"NULL****************");
Log.v("test", "image not clicked");
writer.write("Picture could not be clicked:");
writer.flush();
}
try {
FileOutputStream outputfile = new FileOutputStream(
"sdcard/DCIM/Camera/test.jpg");
outputfile.write(data);
outputfile.close();
MESSAGE = String.valueOf(data);
writer.write("Done-------------------");
writer.flush();
Log.v("test", "image clicked and saved in sdcard");
} catch (FileNotFoundException e) {
// TODO: handle exception
Log.d("EXCEPTION", "MESSAGE", e);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
mcamera.release();
} catch (Exception e) {
// TODO: handle exception
Log.v("EXCEPTION", "The picture could not be taken.", e);
}
}
if (!str1.contains("IMAGE=true")) {
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage(smsNumber, null, MESSAGE, null,
null);
}
writer.write("MESSAGE SENT\nMESSGE-DETAILS\n" + MESSAGE+smsNumber);
writer.flush();
}
writer.close();
reader.close();
Log.v("Sockets", "closed");
}
仅供参考
不要只是复制粘贴它,它实际上与我在 android 中制作的项目有关。所以我试图跳过平台特定的东西。它只是提供一个关于如何向 java 程序发送 http 请求的想法。
进一步阅读套接字
开始
http://www.tutorialspoint.com/java/java_networking.htm
还有一些...
我在 Java 中编写了一个 IRC Bot,我一直在寻找一种方法来启动和停止整个程序 PHP。
我考虑过使用 exec() 来启动它,并使用套接字侦听器使其退出,但我以前从未使用过套接字侦听器,更不用说从 PHP!
(运行 在 windows 服务器上,没有屏幕请)
有什么想法吗? (示例?链接?)
谢谢大家。
编辑:一位朋友反驳了我的想法,有没有什么方法可以通过向 Java 程序发送 POST 或 GET 数据来使程序停止?
只是各种其他选项的建议...
继续从套接字读取传入请求...在端口 9000 上说并解析请求。
因此,例如您收到请求参数说:stop_server=true 然后在读取此类参数时通过调用
停止 java 程序System.exit(1);
这里有一些供参考。
1.) 在非标准端口上打开套接字。
server_socket = new ServerSocket(9090, 0, localhost);
2.) 现在开始听。
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
while (true) {
client = server_socket.accept();
Log.v("test","accepted");
IncomingMessage incomingMessage=new IncomingMessage(client);
incomingMessage.processMessage();
}
} catch (Exception e) {
// TODO: handle exception
Log.v("Exception", "", e);
}
}
}).start();
3.) 现在解析您的请求。
streamReader = new InputStreamReader(incomingStream.getInputStream());
reader = new BufferedReader(streamReader);
while ((str1 = reader.readLine()).startsWith("GET")) {
if (str1.contains("phone")
& str1.contains("LOCATION=false")) {
String params = str1.substring(5);
Log.d("substring", params);
String paramStart = params.substring(1,
"phone".length() + 13);
Log.d("substring-", paramStart);
smsNumber = paramStart.split("=")[1];
} else if (str1.contains("LOCATION=true")
& str1.contains("phone")) {
String params = str1.substring(5);
Log.d("substring", params);
String paramStart = params.substring(1,
"phone".length() + 13);
smsNumber = paramStart.split("=")[1];
LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
String provider = manager.getBestProvider(criteria, true);
Location location = manager.getLastKnownLocation(provider);
double latitude = location.getLatitude();
double longitude = location.getLongitude();
CharSequence location_string = String.valueOf(latitude)
+ "," + String.valueOf(longitude).toString();
MESSAGE = MAP_LINk + location_string;
} else if (str1.contains("IMAGE=true")) {
try {
Camera mcamera = Camera.open();
mcamera.startPreview();
mcamera.takePicture(null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data,
Camera camera) {
// TODO Auto-generated method stub
File mpicture = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (mpicture == null) {
Log.d("*************",
"NULL****************");
Log.v("test", "image not clicked");
writer.write("Picture could not be clicked:");
writer.flush();
}
try {
FileOutputStream outputfile = new FileOutputStream(
"sdcard/DCIM/Camera/test.jpg");
outputfile.write(data);
outputfile.close();
MESSAGE = String.valueOf(data);
writer.write("Done-------------------");
writer.flush();
Log.v("test", "image clicked and saved in sdcard");
} catch (FileNotFoundException e) {
// TODO: handle exception
Log.d("EXCEPTION", "MESSAGE", e);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
mcamera.release();
} catch (Exception e) {
// TODO: handle exception
Log.v("EXCEPTION", "The picture could not be taken.", e);
}
}
if (!str1.contains("IMAGE=true")) {
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage(smsNumber, null, MESSAGE, null,
null);
}
writer.write("MESSAGE SENT\nMESSGE-DETAILS\n" + MESSAGE+smsNumber);
writer.flush();
}
writer.close();
reader.close();
Log.v("Sockets", "closed");
}
仅供参考
不要只是复制粘贴它,它实际上与我在 android 中制作的项目有关。所以我试图跳过平台特定的东西。它只是提供一个关于如何向 java 程序发送 http 请求的想法。
进一步阅读套接字
开始
http://www.tutorialspoint.com/java/java_networking.htm
还有一些...