CTZLoginServer/src/cn/citycraft/CTZLoginServer/Socket/CTZLoginServerSocket.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) {
}
}
}
}