Socket Thread in Schleife

Sc0rP1En

Mitglied
Hallo Forum,

habe zu meiner Frage leider nichts gefunden, werder hier, noch bei Google.

Ich habe eine while-Schleife in der über RXTX Daten ausgelesen werden. Nun würde ich diese Daten gerne mittels Sockets verschicken. Ich habe es so gelöst:

Java:
while ( ( len = in.read(buffer)) > -1 )
				{
…
Datenübertragung data = new Datenübertragung(_north,_east);
						data.start();
…
}

Datenübertragungsklasse
Java:
public class Datenübertragung extends Thread {
	
	double _north;
	double _east;
	
public Datenübertragung(double north, double east) {
	// TODO Auto-generated constructor stub
	this._north=north;
	this._east=east;
}
	
public void run()
{
	
		try {
			
			Socket client = new Socket (hostname,portnumber);
			DataOutputStream output = new DataOutputStream(client.getOutputStream());
			InetAddress address = client.getInetAddress();
			String dataString = new Date()+";"+address.getHostName()+";"+_north+";"+_east+"\n";
			output.writeBytes(dataString);
			output.flush();
			client.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Ist das richtig gelöst oder bekomme ich hier irgendwann Performanceproblemen da in der While ständig die Klasse in einem Thread geöffnet wird? Funktionieren tut es!
Ich hoffe ich stelle mich nicht allzu dumm an. 🙂

Danke für eure Hilfe

Greets
Sc0rP1En
 
Wenn, dann sollte die while-Schleife wohl eher in der run() des Threads laufen. So wie es jetzt ist baust jedesmal eine neue Verbindung auf.
Ausserdem sollen ja - wenn ich das richtig verstehe - die eingelesenen Daten letztendlich über diese Verbindung verschickt werden. Mit Deinem Vorgehen ist nicht gewährleistet, dass die Daten in der selben Reihenfolge in der Sie eingelesen werden auch beim Gegenüber ankommen.
 
Danke für deine Antwort.

D.h. ich soll ein Thread machen mit der Socketclass und in dieser Socketclass sollen dann die Daten der Schnittstelle ausgelesen werden um diese dann zu verschicken?

Soll ich das Auslesen auch in einem eigenen Thread machen lassen oder ohne eigenen Thread?

Greets
Sc0rP1En
 
Du kannst ja den InputStream oder was auch immer hinter in steckt, dem Thread übergeben. Dieser baut in der run() die Socketverbindung auf, liest die Daten in der while-Schleife ein und schreibst die eingelesenen Bytes sofort über den OutputStream wieder raus.
 

Zurück
Oben