Socket Performance erhöhen?

Also verpassen tust du auf keinen Fall was. Bist du es nicht rausliest bleiben die Daten eigentlich im Stream.

Ich frage mich nur gerade warum du das was du liest erst in einen String umwandelst?

Schreib doch einfach nur die Zahlen in den Stream und gut ist:
S1020

S wäre quasi nen Startpunkt damit du nicht falsch liest. Danach folgen einfach beide Ints.

Auslesen dann mit:
Java:
InputStream in = client_socket.getInputStream();
byte [] b = new byte[(Integer.SIZE/Byte.SIZE)*2 + Character.SIZE/Byte.SIZE];//hoffe das reicht an Größe
ByteBuffer buf = ByteBuffer.wrap(b);
char c = buf.getChar();
//prüfe ob dies dass Start-Zeichen ist
int x = buf.getInt();
int y = buf.getInt();

Oder du verwendest direkt nen DataOutputStream und DataInputStream..

Java:
DataInputStream in = new DataInputStream(client_socket.getInputStream());
char c = in.readChar();
//prüfe ob dies dass Start-Zeichen ist
int x = in.readInt();
int y = in.readInt();
 
hey, danke für den Lösungsvorschlag. Ich hab noch ein paar Fragen:
mein Client ist nicht in Java geschrieben, deshalb kann ich den send() befehl auch nicht so einfach modifizieren, soweit ich das sehe, sendet der Client nämlich in String, deshalbdas konverten String. Ich werd aber deinen Vorschlag auf jeden Fall ausprobieren.
Brauche ich eigentlich ein Startzeichen, wenn es immer gleich abgesenet wid?
Wie soll ich byte verstehen?
 
hey
ich habs grad mal probiert, ich weiß aber gar nicht, wohin ich die Befehle genau machen soll
ich hab das so gemacht:
Code:
		    	InputStreamReader bufferedReader = new InputStreamReader(client_socket.getInputStream());
		    	
		    	byte [] b = new byte[2048];//hoffe das reicht an Größe
		    	
		    	//BufferedReader newReader = new BufferedReader()
		        while(true){
		        	//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(client_socket.getInputStream()),30);
		        	ByteBuffer buf = ByteBuffer.wrap(b);
		        	int x = buf.getInt();
		        	System.out.println(x);
Ich bekomm aber immer nur 0 zurück, ich send auch nur einen Int Wert.
Wo wird der buffer eigentlich dem Inputstream zugewiesen?
 
hey, ich hab mal ne frage, wär es nicht schneller, wenn man nicht parseInt machen würde, sondern eine indivduelle select abfrage?
Also select
case string="0" then int=0
also für die Zahlen 1-1000 sowas machen?
Hört sich lang an, aber sollte doch schneller sein als parseInt oder?
 
Nein das ist auf keinen Fall schneller...

Die Lösung wie es schnell ist habe ich dir im Prinzip gegeben. Versuch doch mal ernsthaft das zu verstehen und einzubauen.
 
habe ich doch probiert, das Problem ist, dass ich beim Client immer nur als String senden kann, und deswegen nicht beim Server als Int lesen kann.
Deshalb bekomme ich auch immer nur die 0 zurück.
Edit:
In hab mal ein wenig gegoogelt, und es gibt einen fall wo es um 50 % schneller war.
 
bei sowas würde ich immer eine udp verbindung. wenn du ein telegramm verlierst, drauf, aber DAS ist wirklich schnell :)
 
Zurück