我编写了两个java类和一个shell脚本。把它们放到一个我不认识的人的文件夹里。他只需要打开包装并运行shell脚本。
检查Java是否正确安装
如果是这样,请将java类路径设置为存在java类的文件夹。
编译并运行。
我的zip文件将包含应用程序.java, 消息.java, 霉菌执行.sh.
#!/bin/bash
export CLASSPATH=$CLASSPATH:.
echo $CLASSPATH
VER=`java -version 2>&1 | grep "java version" | awk '{print $3}'
| tr -d \" | awk '{split($0, array, ".")} END{print array[2]}'`
if [[ $VER -gt 6 ]]; then
echo "Java version is greater than 1.6."
else
echo "Java version is lower than 1.6."
fi
javac App.java
javac Message.java
java App
这是我的留言密码应用程序.java
package com.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* This class creates two instances of same class and performs message
* transmission.
*
*/
public class App {
final static String initTurn = "initiator";
final static String receiverTurn = "receiver";
public static void main(String[] args) {
App app = new App();
InputStreamReader r = new InputStreamReader(System.in); // Input reader for messages
InputStreamReader totalMessages = new InputStreamReader(System.in); // Input reader to get total number of
// messages
BufferedReader br = null;
Message initiator = new Message(); /* Instance for initiator who initiates the message */
Message receiver = new Message(); /* Instance for receiver who receives and re-sends the message. */
String initMessage = null; /* Message got from the initiator */
String recvMessage = null; /* Message to be sent back to initiator by receiver */
String turn = initTurn; /* Turn to send message by initiator or receiver. */
try {
/*
* This snippet is implemented to give option of sending n number of messages
* and receive it. User can choose to transmit total number of messages
*/
int c = 0;
System.out.println("How many messages do you wish to transmit? ");
br = new BufferedReader(totalMessages);
c = Integer.parseInt(br.readLine());
/* br object is reset for receiving messages from user. */
br = null;
br = new BufferedReader(r);
for (int counter = 1; counter <= c;) { /*
* Message transmission stops when initiator reach the transmission
* limit
*/
if (initTurn.equals(turn)) {
System.out.println("\nInitiator... Please type your message:\n ");
if (counter == c) {
System.out.println("This would be the last message which you may sent and receive.\n");
}
/* Receiving message as input by initiator. */
initMessage = br.readLine();
turn = receiverTurn; /*
* turn is set to receiver that is transmission turn is now given to
* receiver.
*/
initiator.setMessage(initMessage);
} else if (receiverTurn.equals(turn)) {
/* Receiver gets message from Initiator */
receiver.setMessage(initiator.getMessage());
recvMessage = receiver.getMessage();
/* Receiver re-sends the message to the initiator with the message counter. */
System.out.println("\nMessage received by Initiator from Receiver is: ' " +
recvMessage
+ "'. Message counter " + counter);
if (counter == c) {
System.out.println("\nMessage transmission limit over. See you again.");
}
turn = initTurn; /*
* turn is set to receiver that is transmission turn is now given to initiator.
*/
counter++;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
if (totalMessages != null) {
try {
totalMessages.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
if (r != null) {
try {
r.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
}
class Message {
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}