Хорошо, поэтому я не уверен, действительно ли произошла ошибка или нет.Я создал сервер прослушивания с использованием Java и NetBeans и пытаюсь заставить протокол работать.Однако по какой-то причине он не хочет принимать входящие сообщения.Он будет принимать входящие соединения и настраивать объект, используемый для обработки клиента, но просто не получит никаких сообщений.
Я не уверен, что происходит, я делаю что-то не так?Кроме того, у меня уже есть переадресованный порт 7777, и я провожу тестирование с использованием "127.0.0.1".
=====================================================================
В настоящее время у меня есть 3 класса:
Основной класс, GMServer:
public class GMServer {
public static void main(String[] args) throws IOException {
CreateListener createListener = new CreateListener("USA Server East",7777,500);
}
}
=======================================================================
Класс CreateListener:
public final class CreateListener {
private ServerSocket listenSocket = null;
private String serverName = "";
private int serverPort = 7777;
private int serverMax = 500;
private boolean terminate = false;
private double connectID = 0;
private String currentUser = "-1";
private listenParser[] connections;
private int listenArray = 0;
public listenParser[] users;
public int usercount;
private boolean listenerConnected = true;
public double getCID() {
this.connectID++;
return this.connectID;
}
public CreateListener(String sName, int sPort, int sMax) throws IOException {
//Set the server name, port, and max users.
this.serverName = sName; this.serverPort = sPort; this.serverMax = sMax;
//Try to create a listener socket.
try { this.listenSocket = new ServerSocket(this.serverPort); } //If not successful, output error and end program.
catch (IOException e) { System.err.println("Could not create a listening server on port "+this.serverPort); System.exit(7777); }
//Let the console know that the listening server was created successfully.
System.out.println("Creating Server: \""+serverName+"\" On Port "+serverPort+"...");
while(listenerConnected) {
try {
Socket accepted = this.listenSocket.accept();
new listenParser(accepted,getCID(),sMax).start();
} catch (IOException e) {
//Socket Wasn't Accepted?
}
}
//Close down server after anything should cause the constant loop to end.
listenSocket.close();
}
}
==================================================================================
, а затемКласс listenParser (где он должен обрабатывать весь трафик от клиентов):
public class listenParser extends Thread {
public Socket[] global_sockets;
public int connections = 0;
private PrintWriter _out = null;
private BufferedReader _in = null;
private double cid = 0;
private Socket socket = null;
private String currentUser = "";
private int timeout = 0;
private boolean connectionOpen = true;
private int socketTimeout = 0;
private int socketTimeoutMax = 1000;
private String room = "";
private long x = 0;
private long y = 0;
public listenParser(Socket sock, double acID, int maxUsers) {
super("listenParser");
this.socket = sock;
System.out.println("Connected To A Client...");
}
public String readString(BufferedReader tmpBuffer) {
try {
return tmpBuffer.readLine();
} catch (IOException e) {
return "";
}
}
public String protocol(String arg) {
String RETURN = "";
switch(arg) {
case "login": currentUser = "1"; break;
case "echo": this._out.println(readString(this._in)); break;
default: /*Do Nothing*/ break;
}
//Only allow access to these commands if the user is logged in.
if (currentUser!="") {
switch(arg) {
default: break;
}
}
return RETURN;
}
public boolean good() {
if (this.currentUser.equals("")) {
return false;
}
return true;
}
@Override
public void run() {
try {
_out = new PrintWriter(socket.getOutputStream(),true);
_in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
connections++; if (connections>500) { connectionOpen = false; }
while(connectionOpen) {
try {
String arguments, reply;
arguments = this._in.readLine();
reply = protocol(arguments);
socketTimeout = 0;
} catch (IOException e) {
socketTimeout++;
if (socketTimeout>socketTimeoutMax) {
connectionOpen = false; break;
}
}
}
_out.close();
_in.close();
socket.close();
System.out.println("Client Disconnected...");
} catch (IOException e) {
e.printStackTrace();
}
}
}