Hallo Leute.
Ich schreibe gerade an einem Socketbasierten Plugin.
Dieses Plugin ist für einen Multiplayerserver gedacht.
Das die SocketAPI dauerhaft den Thread anhält ist also hinderlich.
Ich schaffe es allerdings nicht, das zu ändern.
Ich habe es so gemacht:
Beim aktivieren des Plugins wird
aufgerufen.
Konstruktor:
[JAVA=18]
try {
server=new ServerSocket(Server.getConfig().getInt("net.port"));
listen();
} catch (Exception e) {
e.printStackTrace();
}
[/code]
In der Methode listen() habe
ich für accept() einen neuen thread erstellt:
[JAVA=27]
Thread t=new Thread(new Runnable(){
@Override
public void run() {
while (!server.isClosed()){
Socket skt;
try {
skt = server.accept();
new Processor(skt);
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
t.run();
[/code]
Der Prozessor ist eine Klasse, die Die Anfrage verarbeitet und antwortet. Da wird der listener Thread zwar kurzzeitig angehalten, allerdings hat das geklappt.
Der Hauptthread wird aber trotzdem DAUERHAFT angehalten.
Muss ich hier nur etwas korrigieren, oder ist mein Ansatz einfach falsch?
Ich hoffe dass ihr diesen langen Text lesen konntet und natürlich auf eure Hilfe
Ich schreibe gerade an einem Socketbasierten Plugin.
Dieses Plugin ist für einen Multiplayerserver gedacht.
Das die SocketAPI dauerhaft den Thread anhält ist also hinderlich.
Ich schaffe es allerdings nicht, das zu ändern.
Ich habe es so gemacht:
Beim aktivieren des Plugins wird
Code:
new SocketListener()
Konstruktor:
[JAVA=18]
try {
server=new ServerSocket(Server.getConfig().getInt("net.port"));
listen();
} catch (Exception e) {
e.printStackTrace();
}
[/code]
In der Methode listen() habe
ich für accept() einen neuen thread erstellt:
[JAVA=27]
Thread t=new Thread(new Runnable(){
@Override
public void run() {
while (!server.isClosed()){
Socket skt;
try {
skt = server.accept();
new Processor(skt);
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
t.run();
[/code]
Der Prozessor ist eine Klasse, die Die Anfrage verarbeitet und antwortet. Da wird der listener Thread zwar kurzzeitig angehalten, allerdings hat das geklappt.
Der Hauptthread wird aber trotzdem DAUERHAFT angehalten.
Muss ich hier nur etwas korrigieren, oder ist mein Ansatz einfach falsch?
Ich hoffe dass ihr diesen langen Text lesen konntet und natürlich auf eure Hilfe
Zuletzt bearbeitet: