📄 mathserver.java
字号:
import java.io.*;
import java.net.*;
public class MathServer extends Thread{
private Socket socket;
private MathService mathService;
public void setMathService(MathService mathService) {
this.mathService = mathService;
}
public void setSocket(Socket socket) {
this.socket = socket;
}
public void run(){
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
String result = "";
try{
result = (float)parseExecution(line)+"";
}catch(Exception e){
result = e.getMessage();
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write(""+result);
writer.newLine();
writer.flush();
reader.close();
writer.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
socket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
public double parseExecution(String line) throws
IllegalArgumentException{
//get the argument from the original data received and caculate the result
double result = Double.MAX_VALUE;
double value = 0;
String[] elements = line.split(":");
if(elements.length != 2){
throw new IllegalArgumentException("Parsing Error!");
}
try{
value = Double.parseDouble(elements[1]);
}catch(Exception e){
throw new IllegalArgumentException("Invalid arguments!");
}
if(elements[0].equalsIgnoreCase("sqrt")){
result = mathService.sqrt(value);
}
else if(elements[0].equalsIgnoreCase("sin")){
result = mathService.sin(value);
}
else if(elements[0].equalsIgnoreCase("cos")){
result = mathService.cos(value);
}
else if(elements[0].equalsIgnoreCase("tan")){
result = mathService.tan(value);
}
else if(elements[0].equalsIgnoreCase("log")){
result = mathService.log(value);
}
else if(elements[0].equalsIgnoreCase("prime")){
boolean tag = true;
tag = mathService.prime((int)value);
if(tag == true){
result = 1;
}
else{
result = 0;
}
}
else{
throw new IllegalArgumentException("Invalid math operation!");
}
return result;
}
public static void main(String[] args)throws Exception{
int port = 0;
if(args.length == 1){
try{
port = Integer.parseInt(args[0]);
}catch(Exception e){
e.printStackTrace();
}
}
else{
System.out.print("Error port number!");
System.exit(0);
}
System.out.println("Math server is running...");
ServerSocket serverSocket = new ServerSocket(port);
while(true){
//whenever accept a connection
Socket socket = serverSocket.accept();
//create a thread to do math service
MathServer mathServer = new MathServer();
mathServer.setSocket(socket);
mathServer.setMathService(new MathService());
//do the math service
mathServer.start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -