76 lines
1.9 KiB
Java
76 lines
1.9 KiB
Java
package cn.citycraft.CTZLoginServer.Socket;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.BufferedWriter;
|
|
import java.io.InputStreamReader;
|
|
import java.io.OutputStreamWriter;
|
|
import java.io.PrintWriter;
|
|
import java.net.ServerSocket;
|
|
import java.net.Socket;
|
|
|
|
import cn.citycraft.CTZLoginServer.CTZLoginServer;
|
|
import fr.xephi.authme.api.API;
|
|
|
|
public class CTZLoginServerSocket implements Runnable {
|
|
|
|
public int PORT = 8080;
|
|
public CTZLoginServer plugin;
|
|
|
|
/**
|
|
* 初始化服务端口
|
|
*/
|
|
public CTZLoginServerSocket(CTZLoginServer plugin, int port) {
|
|
this.plugin = plugin;
|
|
PORT = port;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
ServerSocket s = null;
|
|
Socket socket = null;
|
|
BufferedReader br = null;
|
|
PrintWriter pw = null;
|
|
try {
|
|
// 设定服务端的端口号
|
|
s = new ServerSocket(PORT);
|
|
System.out.println("CTZL服务器开始监听:" + s);
|
|
// 等待请求,此方法会一直阻塞,直到获得请求才往下走
|
|
while (true) {
|
|
socket = s.accept();
|
|
// 用于接收客户端发来的请求
|
|
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
|
// 用于发送返回信息,可以不需要装饰这么多io流使用缓冲流时发送数据要注意调用.flush()方法
|
|
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
|
|
socket.getOutputStream())), true);
|
|
while (true) {
|
|
if (socket.isClosed()) {
|
|
break;
|
|
}
|
|
String str = br.readLine();
|
|
if (str.equals("END")) {
|
|
break;
|
|
}
|
|
Thread.sleep(1000);
|
|
API.isRegistered(str);
|
|
pw.println("Message Received");
|
|
pw.flush();
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
System.out.println("CTZL服务器崩溃...");
|
|
} finally {
|
|
System.out.println("关闭连接");
|
|
try {
|
|
br.close();
|
|
pw.close();
|
|
socket.close();
|
|
s.close();
|
|
} catch (Exception e2) {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|