Hallo liebe Community,
jetzt steh ich vor einem Problem, dass ich ohne euch nicht lösen kann.
Ich habe ein Programm geschrieben, das Auswertungen durchführt.
Funktioniert tadellos.
Habe eine Klasse erzeugt(serverThread), die nur auf Anfragen von Clients reagiert. Wenn ein Client sich auf einen Socket verbindet, wird die Klasse serverThread2 gestartet. Somit habe ich für jeden Client einen eigenen serverThread2.
serverThread:
ServerThread2:
Gut, die Verbindung steht, man könnte kommunizieren.
Das Problem:
Im serverThread steht:
somit kann ich den Thread nicht wie ein normales Objekt ansprechen. Also logisch für mich hätte es so funktionieren müssen:
serverThread2 meinServerThread2 = new serverThread2(serverSocket.accept()).start();
Leider funktioniert das nicht so.
Ich möchte aber gerne den Thread irgendwie ansprechen können, denn wenn in meinem Auswertungssystem ein Button "Senden" gedrückt wird, soll auch eine Message an einen speziellen Client (serverThread2) gelangen.
Also kurz gesagt:
Wie spreche ich meinen Thread an, übergebe ihm Werte und bekomme auch Rückmeldungen?
Ich hoffe, dass alles verständlich ist.
Mfg
Paul
jetzt steh ich vor einem Problem, dass ich ohne euch nicht lösen kann.
Ich habe ein Programm geschrieben, das Auswertungen durchführt.
Funktioniert tadellos.
Habe eine Klasse erzeugt(serverThread), die nur auf Anfragen von Clients reagiert. Wenn ein Client sich auf einen Socket verbindet, wird die Klasse serverThread2 gestartet. Somit habe ich für jeden Client einen eigenen serverThread2.
serverThread:
Java:
package myserver;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Asus Schlappi
*/
public class serverThread extends Thread{
private ServerSocket serverSocket = null;
public serverThread(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
public void run() {
boolean listening = true;
try {
while (listening)
new serverThread2(serverSocket.accept()).start();
serverSocket.close();
} catch (IOException ex) {
Logger.getLogger(serverThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
ServerThread2:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package myserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Paul
*/
public class serverThread2 extends Thread{
private Socket socket = null;
String vomClient;
String zumClient;
PrintWriter out;
BufferedReader in;
serverThread2(Socket accept) {
super("serverThread");
this.socket = socket;
System.out.println("Vor beim Server");
}
public void run() {
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
zumClient = "START";
out.println(zumClient);
while ((vomClient = in.readLine()) != null) {
//out == damit wird alles zum Client geschickt
out.println(zumClient);
//Clientverbindung schließen
if (zumClient.equals("Bye"))
break;
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
}
}
}
Gut, die Verbindung steht, man könnte kommunizieren.
Das Problem:
Im serverThread steht:
Java:
new serverThread2(serverSocket.accept()).start();
somit kann ich den Thread nicht wie ein normales Objekt ansprechen. Also logisch für mich hätte es so funktionieren müssen:
serverThread2 meinServerThread2 = new serverThread2(serverSocket.accept()).start();
Leider funktioniert das nicht so.
Ich möchte aber gerne den Thread irgendwie ansprechen können, denn wenn in meinem Auswertungssystem ein Button "Senden" gedrückt wird, soll auch eine Message an einen speziellen Client (serverThread2) gelangen.
Also kurz gesagt:
Wie spreche ich meinen Thread an, übergebe ihm Werte und bekomme auch Rückmeldungen?
Ich hoffe, dass alles verständlich ist.
Mfg
Paul