📄 serverthread.java
字号:
package testsystem;
import java.io.*;
import java.net.*;
import java.util.*;
public class ServerThread extends Thread
{
private Socket connectToClient;
private DataOutputStream outToClient;
private DataInputStream inFromClient;
private ReadTest readTest;
private String selectedAnswer="";
public ServerThread(Socket socket)
{
connectToClient=socket;
try {
readTest=new ReadTest();
inFromClient=new DataInputStream(connectToClient.getInputStream());
outToClient=new DataOutputStream(connectToClient.getOutputStream());
} catch (Exception ex) {
}
start();
}
private void socketClosing()
{
try
{
inFromClient.close();
outToClient.close();
connectToClient.close();
}
catch(Exception e)
{
System.out.println("关闭socket异常!");
}
}
public void run()
{
String inStr="";
String outStr="";
while(true)
{
try {
inStr=inFromClient.readUTF();
System.out.println(inStr);
if(inStr.startsWith("开始考试"))
{
int time=readTest.getTestTime();
System.out.println(time);
outToClient.writeUTF("考试时间@"+time);
outStr=readTest.getTestQuestion();
outToClient.writeUTF("下一题@"+outStr);
System.out.println(inStr);
}
if(inStr.startsWith("下一题"))
{
outStr=readTest.getTestQuestion();
outToClient.writeUTF("下一题@"+outStr);
}
else if (inStr.startsWith("提交答案"))
{
inStr=inStr.substring(inStr.indexOf("@")+1);
selectedAnswer+=inStr;
}
else if (inStr.startsWith("成绩"))
{
int score=getTestScore();
if (score>=60)
outStr="成绩:"+ score+"\n祝贺你通过考试!";
else outStr="成绩:"+score+"\n你没有通过考试!";
outToClient.writeUTF(outStr);
saveTestScore("testscore.txt","成绩\t"+score);
System.out.println(outStr);
}
}catch (IOException ex)
{
socketClosing();
System.out.println("与客户的连接中断");
break;
}
catch(NullPointerException e)
{
}
}
}
private int getTestScore()
{
String correctAnswer=readTest.getCorrectAnswer();
int n=0,testScore=0;
int length1=correctAnswer.length();
int length2=selectedAnswer.length();
int min=Math.min(length1,length2);
for(int i=0;i<min;i++)
{
if(selectedAnswer.charAt(i)==correctAnswer.charAt(i))
n++;
}
testScore=(int)(100.0*n/length1);
return testScore;
}
private void saveTestScore(String file, String score)
{
try {
BufferedWriter scoreFile=new BufferedWriter(new FileWriter(file,true));
String name=connectToClient.getInetAddress().toString();
scoreFile.write(score);
scoreFile.newLine();
scoreFile.flush();
scoreFile.close();
} catch (Exception ex) {
System.out.println("写成绩到文件到文件发生异常!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -