Java Networking

starbuck86

Mitglied
Hallo Community.

Ich hab mal wieder ein kleines Problemchen.
Und zwar handelt es sich um mein hypothetisches Netzwerk.

Es besteht aus 2 Computern, linhost und javhost.

Auf linhost ist ein Linux-Derivat installiert, welches ein Programm (cnsout) bereitstellt, womit ich eine mehrzeilige Ausgabe auf der Konsole produzieren kann.

Auf javhost ist ein nicht definiertes Betriebssystem (Linux, Solaris, Windows) installiert, welches ein Java-Programm bereitstellt. Mit diesem Java-Programm möchte ich die Ausgabe von cnsout auf javhost holen.

Mein erster Gedanke war, machste doch einfach ne Telnet/SSH-Verbindung auf, führst das Programm aus und schreibst den Output Zeile für Zeile in ein Array, um es dann weiter zu verarbeiten.
Allerdings bin ich mir nicht so sicher, ob das so funktionieren würde?
Kann mir jemand ein paar Anhaltspunkte geben, wie soetwas umzusetzen ist?

Danke schon mal im Vorraus && Gruß
Thomas
 
Hi Starbuck,

guck Dir mal die Kommunikation über Server Sockets an.
Damit kannst Du über Dein eigenes Netzwerk zwischen Rechnern wahlweise TCP/UDP Pakete hin und herschicken - im Prinzip so wie es Chat Clients machen.

Hab leider im Moment nicht die Zeit jetzt Code rauszusuchen, aber guck mal die Java-API bezüglich Sockets etc. durch.

Grüße

Tim
 
Ok, habs mir angeschaut. Allerdings wird mir das nicht wirklich weiterhelfen, da ich auf der anderen Seite kein Java-Gegenstück habe, sondern wirklich NUR Telnet.
Wenns jemanden interessiert, bin auf folgendes gestoßen, was mir weiterfeholfen hat:
http://commons.apache.org/net/
Das Package biete u.a. Telnet-Support.

Trotzdem Danke.
Gruß Thomas
 
Zuletzt bearbeitet:
Hallo zusammen,
ich hätte dann doch noch eine weiterführende Frage:

Also wenn ich einen Java-Server programmiere, der über eine Endlosschleife darauf wartet neue Connections zu Clients anzunehmen, kann ich mir in diesem Server irgendwie merken, wie viele Clients sich angemeldet haben und diese dann auch direkt ansprechen?

Die Idee war diese. Ich mache einen Server auf, auf dem sich etwa 5 Clients anmelden. Und immer wenn sich in einer Datei etwas geändert hat soll das Server-Programm die Informationen an alle Clients schicken.

Gruß && Danke
Thomas
 
Du kannst doch Clinet-Objekte erstellen und diese in eine Collection packen. Dort hast du dann alle drin, die verbunden sind. Sollte sich einer Trennen, entfernst du ihn einfach aus der Collection. So brauchst du immer nur eine Zählschleife durchlaufen lassen um an jeden Client etwas zu senden.
 
Ok. Ich hab mir jetzt mal was geschrieben.

Java:
package networking;

import java.net.*;
import java.io.*;

public class SServer {
	
	private static Socket[] client = new Socket[10];
	private static OutputStream[] out = new OutputStream[10];
	private static InputStream[] in = new InputStream[10];
	
	public static void handleConnection(int count) throws IOException {
		in[count] = client[count].getInputStream();
		out[count] = client[count].getOutputStream();
	}
	
	public void closeConnection(int count) throws IOException {
		client[count].close();
		client[count] = null;
		in[count] = null;
		out[count] = null;
	}

	public static void main(String[] args) throws Exception
	{
		ServerSocket server1 = new ServerSocket(14002);
		Socket client_default = null;
		
		while (true) {  
			try {
				client_default = server1.accept();
				if (client_default != null){
					for (int i=0; i < client.length; i++) {
						if (client[i] == null) {
							client[i] = client_default;
							handleConnection(i);
						}
					}	
					client_default = null;
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} //Endlosschleife zum Annehmen der neuen Connections
	}
}

  1. Was haltet ihr davon - kann das so funktionieren?
  2. Wie bekomme ich raus, dass einer der Clients seine Connection geclosed hat, damit ich meine Methode 'closeConnection(int count)' starten kann?
  3. Mit den Output- und InputStreams kann ich ja immer nur 1 Zeichen übermitteln. Kann mir da jemand nen Codebeispiel geben, mit dem ich mehrzeilige Strings übermitteln kann?

Gruß

//EDIT: Ich merk schon, das Wochenende naht *g*
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück