Ich bin nicht sicher, ob es tatsächlich an meiner Java-Implementation liegt, oder ob es unter Umständen an dem Programm liegt, zu dem ich verbinden möchte...
Ich verwende Win7x86 mit aktueller java sdk/runtime
Der Server ist folgendes Programm: rcssserver3d mit SimSpark 0.6.5. Simulationsserver der Robocup-Liga (ist allerdings in c++ geschrieben und liegt nur als ausführbare datei vor)
Nun gibt es folgendes Problem:
Da ich einen Evolutionsalgorithmus durchführe, habe ich zZ 10 Threads, die auf einem Server verbinden sollen:
gekürzter quelltext der Verbindungen:
Während es mit nur einem Thread wunderbar funktioniert, schlägt das ganze irgendwie fehl, wenn ich es mit mehreren versuche, gibts Fehler. Die Threads laufen zwar, wenn sie aber versuchen über die Sockets mit dem Server zu verbinden, führt das zum Absturz des Servers.
Ich sitze schon einige Zeit daran, aber mir will keine Idee kommen, wie ich an das Problem herangehen kann. Ich wäre sehr dankbar, wenn jemand eine Lösung hätte - auch vermutungen sind mir recht.
Edit: Die Implementation der Sockets ist Fremdsoftware, die normal auch problemlos funktioniert, wenn ich die Agenten manuell starte...
Edit: das Agentenframework ist das Magma3DFramework des RoboCup-Teams der Hochschule Offenburg
Ich verwende Win7x86 mit aktueller java sdk/runtime
Der Server ist folgendes Programm: rcssserver3d mit SimSpark 0.6.5. Simulationsserver der Robocup-Liga (ist allerdings in c++ geschrieben und liegt nur als ausführbare datei vor)
Nun gibt es folgendes Problem:
Da ich einen Evolutionsalgorithmus durchführe, habe ich zZ 10 Threads, die auf einem Server verbinden sollen:
gekürzter quelltext der Verbindungen:
Java:
//main loop
while ((!checkFitness(iterations)) && (iterations < _maxiterations)) {
TimeUnit unit = TimeUnit.SECONDS;
Iterator<Future<double[]>> it= executor.invokeAll(tasks, 30, unit).listIterator();
int i = 0;
while (it.hasNext()) {
fitness[i] = computeFitness(it.next().get());
}
decideGeneBase(fitness, false);
iterations++;
}
Während es mit nur einem Thread wunderbar funktioniert, schlägt das ganze irgendwie fehl, wenn ich es mit mehreren versuche, gibts Fehler. Die Threads laufen zwar, wenn sie aber versuchen über die Sockets mit dem Server zu verbinden, führt das zum Absturz des Servers.
Ich sitze schon einige Zeit daran, aber mir will keine Idee kommen, wie ich an das Problem herangehen kann. Ich wäre sehr dankbar, wenn jemand eine Lösung hätte - auch vermutungen sind mir recht.
Edit: Die Implementation der Sockets ist Fremdsoftware, die normal auch problemlos funktioniert, wenn ich die Agenten manuell starte...
Edit: das Agentenframework ist das Magma3DFramework des RoboCup-Teams der Hochschule Offenburg
Zuletzt bearbeitet: