📄 openserver.java
字号:
import java.awt.HeadlessException;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
public class OpenServer extends JFrame implements ActionListener {
ServerSocket server = null;
boolean pauseServer = true;
private JScrollPane jScrollPane1;
private JSeparator jSeparator2;
private JLabel jLabel2;
private JLabel jLabel1;
private JButton jButton2;
private JTextArea jTextArea2;
private JTextArea jTextArea1;
private JScrollPane jScrollPane2;
private JButton jButton1;
private JSeparator jSeparator1;
private StringBuffer studentMessage = new StringBuffer();
private Server_Connection server_connection = null;
public OpenServer() throws HeadlessException {
this.setTitle("服务器");
this.setLayout(null);
this.setResizable(false);
{
jButton1 = new JButton();
getContentPane().add(jButton1);
jButton1.setText("\u5f00\u542f\u670d\u52a1");
jButton1.setBounds(26, 201, 86, 27);
jButton1.addActionListener(this);
}
{
jButton2 = new JButton();
getContentPane().add(jButton2);
jButton2.setText("\u9690\u85cf\u7a97\u4f53");
jButton2.setBounds(182, 201, 97, 26);
jButton2.addActionListener(this);
}
{
jLabel1 = new JLabel();
getContentPane().add(jLabel1);
jLabel1.setText("\u670d\u52a1\u7aef\u4fe1\u606f");
jLabel1.setBounds(12, 3, 86, 15);
}
{
jLabel2 = new JLabel();
getContentPane().add(jLabel2);
jLabel2.setText("\u5ba2\u6237\u7aef\u4fe1\u606f");
jLabel2.setBounds(12, 112, 86, 15);
}
{
jSeparator2 = new JSeparator();
getContentPane().add(jSeparator2);
jSeparator2.setBounds(-1, 195, 306, 10);
}
{
jScrollPane1 = new JScrollPane();
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(12, 24, 280, 76);
{
jTextArea1 = new JTextArea();
//jTextArea1.setEditable(false);
jTextArea1.setEnabled(false);
jScrollPane1.setViewportView(jTextArea1);
jTextArea1.setBounds(12, 24, 280, 76);
}
}
{
jScrollPane2 = new JScrollPane();
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(5, 133, 287, 56);
{
jTextArea2 = new JTextArea();
jTextArea2.setEnabled(false);
jScrollPane2.setViewportView(jTextArea2);
jTextArea2.setBounds(5, 133, 287, 56);
}
}
{
jSeparator1 = new JSeparator();
getContentPane().add(jSeparator1);
jSeparator1.setBounds(2, 107, 302, 10);
}
this.setSize(312, 263);
this.setLocation(250, 190);
this.setVisible(true);
validate();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Window w = e.getWindow();
w.setVisible(false);
w.dispose();
}
});
}
public void Connection() {
try {
server = new ServerSocket(1988);
} catch (IOException e1) {
this.jTextArea1.setText("正在监听....");
}
server_connection = new Server_Connection(server);
server_connection.start();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButton1) {
if(jButton1.getText().equals("开启服务")){
Connection();
this.jButton1.setText("暂停服务");
}
else{
if(server!=null){
try {
server_connection.stop();
server.close();
server = null;
jTextArea1.setText("服务器已关闭...");
} catch (IOException e1) {
e1.printStackTrace();
}
}
this.jButton1.setText("开启服务");
}
}
if(e.getSource()==jButton2){
this.hide();
}
}
class Server_Connection extends Thread {
ServerSocket ss = null;
Socket s = null;
boolean flag = true;
public Server_Connection(ServerSocket ss) {
this.ss = ss;
}
public void run() {
while (flag) {
if (ss != null) {
try {
jTextArea1.setText("等待连接");
s = ss.accept();
InetAddress address = s.getInetAddress();
studentMessage.append("客户端的IP:" + address + "\n");
jTextArea2.setText(studentMessage.toString());
if (s != null) {
new Server_thread(s).start();
} else {
continue;
}
} catch (IOException e) {
e.printStackTrace();
flag = false;
break;
}
} else {
jTextArea1.setText("服务器未开启");
}
}
}
}
}
class Server_thread extends Thread {
int i = 0;
Socket socket = null;
File file = null;
DataOutputStream out = null;
DataInputStream in = null;
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
ReadQuestion readquestion = null;
Question question = null;
Server_thread(Socket t) {
socket = t;
try {
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
try {
readquestion = new ReadQuestion();
question = readquestion.getQuestion();
} catch (Exception ee) {
System.out.println("读取试题出错");
System.exit(0);
}
}
public int getSocre(String StandAnswer, String studentAnswer) {
int score = 0;
if (studentAnswer != null) {
if(StandAnswer.length()<studentAnswer.length()){
char[] sa = StandAnswer.toCharArray();
char[] studentAs = studentAnswer.toCharArray();
for (int i = 0; i < sa.length; i++) {
if (sa[i]==studentAs[i]) {
score++;
}
}
}else{
char[] sa = StandAnswer.toCharArray();
char[] studentAs = studentAnswer.toCharArray();
for (int i = 0; i < studentAs.length; i++) {
if (sa[i]==studentAs[i]) {
score++;
}
}
}
}
return score;
}
public void run() {
while (true) {
String s = null;
try {
s = in.readUTF();
if (s.startsWith("读取试题")) {
String questions = question.getQuestion();
out.writeUTF(questions);
} else if (s.startsWith("提交答案:")) {
StudentManager stm = new StudentManager();
Student student = new Student();
String idStr = s.substring(s.indexOf(":")+1,s.indexOf("#"));
String answer = s.substring(s.indexOf("#") + 1);
int score = getSocre(question.getAnswer(), answer);
int id = Integer.parseInt(idStr);
student.setId(id);
student.setScore(score);
stm.updateStudentScore(student);
out.writeUTF(""+score);
} else if (s.startsWith("查看得分:")) {
// String answer = s.substring(s.indexOf(":") + 1);
// System.out.println("daan:"+answer);
// int score = getSocre(question.getAnswer(), answer);
// System.out.println("score:"+score);
// out.writeUTF(""+score);
}else if(s.startsWith("登陆")){
String str = s.substring(s.indexOf(":")+1);
String idStr = str.substring(0,str.indexOf(":"));
String name = str.substring(str.indexOf(":")+1);
int id = Integer.parseInt(idStr);
Student student = new Student();
student.setId(id);
student.setName(name);
StudentManager stm = new StudentManager();
if(stm.isLogin(student)){
out.writeUTF("登陆成功");
}else{
out.writeUTF("登陆失败");
}
}
} catch (IOException ee) {
try {
socket.close();
} catch (Exception eee) {
}
System.out.println("客户离开了");
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -