Hallo Gemeinde,
ich habe mir für einen Server eine Socketanbindung geschrieben. Das Empfangen läuft in einem eigenen Thread und gibt die Daten ans Main Programm weiter. Zum senden wird einfach eine andere Socketverbindung zum Server aufgebaut und wieder beendet.
Nun habe ich einen anderen Server wo ich das selbe benötige, jedoch läßt dieser nur eine Socketverbindung zu. So ist der Server belegt wenn ich "horche" und kann keine weiteren Befehle senden.
Wie kann ich meinen Code ändern (welcher vom Main Class aheufgerufen wird) damit dieser bidriectional ist?
Vielen Dank!
ich habe mir für einen Server eine Socketanbindung geschrieben. Das Empfangen läuft in einem eigenen Thread und gibt die Daten ans Main Programm weiter. Zum senden wird einfach eine andere Socketverbindung zum Server aufgebaut und wieder beendet.
Nun habe ich einen anderen Server wo ich das selbe benötige, jedoch läßt dieser nur eine Socketverbindung zu. So ist der Server belegt wenn ich "horche" und kann keine weiteren Befehle senden.
Wie kann ich meinen Code ändern (welcher vom Main Class aheufgerufen wird) damit dieser bidriectional ist?
Java:
public class Listener extends Thread
{
public Listener(Commend SC, String IP, int Port) {
this.SC = SC;
this.IP = IP;
this.Port = Port;
}
private Socket clientSocket;
private DataOutputStream outToServer;
private BufferedReader inFromServer;
private Boolean connected;
private Commend SC;
private String IP;
private int Port;
String answer;
public void run() {
try {
clientSocket = new Socket(IP, Port);
outToServer = new DataOutputStream(clientSocket.getOutputStream());
inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// outToServer.writeBytes("listen 1\n");
// answer = inFromServer.readLine();
// SC.setAnswer(answer);
//outToServer.writeBytes("00:04:20:07:3a:b7 status\n");
// answer = inFromServer.readLine();
// SC.setAnswer(answer);
connected = true;
while(connected){
answer = inFromServer.readLine();
SC.setAnswer(answer);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Vielen Dank!