# Socketkommunikation: Immer nur abwechselnd?



## nbkr (14. Mai 2007)

Hallo,

ich habe mir mit Hilfe von quickserver.org einen kleinen TCP Server und dazu einen passenden Client geschrieben. Das Protokoll läuft im Moment so, dass Server und Client immer abwechselnd Daten hin und her schicken. Zuerst sendet der Server ein paar Zeilen, sendet dann eine Zeile mit "FIN" drin. Daraufhin sendet der Client seine Daten und beendet dies auch wieder mit "FIN". Immer abwechselnd also.

Jetzt stellt sich mir die Frage ob das auch gleichzeitig geht. Folgendes Beispiel: Der Client sendet mehrere Zeilen und in einer davon ist ein Syntax Fehler, sprich der Client hat irgendwas geschickt was nicht ins Bild passt. Jetzt soll der Server sofort "Syntax Error" Zeile liefern. Nicht erst wenn der Client alles geschickt hat. Der Client soll natürlich auch sofort auf die Antwort vom Server regieren und keine weiteren Zeilen senden sondern sein Fehler korrigieren indem er neu startet.

Geht das prinzipiel mit "normalen" Sockets oder brauch ich da java.nio dafür?

Gruß
nbkr


----------



## beat84 (14. Mai 2007)

Nein das geht mit sockets nicht. Der Server blockiert nämlich solange er empfängt => synchrone kommunikation.

Noch ein Tipp. Markiere das ende mit CR/LF, ist so üblich

Was soll das überhaupt bringen wenn der Server gleich den Syntax überprüft?? Es reicht doch vollkommen wenn er das paket nach erhalt auf korrektheit überprüft. das ist in jedem protokoll so üblich. Wernn ihm dann was nicht passt kann er sich ja immer noch beim client beschweren.


----------



## nbkr (16. Mai 2007)

beat84 hat gesagt.:
			
		

> Nein das geht mit sockets nicht. Der Server blockiert nämlich solange er empfängt => synchrone kommunikation.



Geht scheinbar doch, nach langem Hin und Her bin ich auf das gekommen:
http://www.benjaminfleckenstein.de/de/anleitungen/javasocketgleichzeitig/



			
				beat84 hat gesagt.:
			
		

> Noch ein Tipp. Markiere das ende mit CR/LF, ist so üblich



Das funktioniert aber nicht wenn ich mehrere Zeilen auf einmal (wie z.B. bei SMTP wenn der Body der Mail übertragen wird) gesendet werden sollen. Da brauche ich irgendeine Art von Endezeichen welche nicht auf CR/LF beruht.



			
				beat84 hat gesagt.:
			
		

> Was soll das überhaupt bringen wenn der Server gleich den Syntax überprüft?? Es reicht doch vollkommen wenn er das paket nach erhalt auf korrektheit überprüft. das ist in jedem protokoll so üblich. Wernn ihm dann was nicht passt kann er sich ja immer noch beim client beschweren.



Ich möchte einfach vermeiden, dass der Client ethliches an Daten sendet _nachdem_ er bereits Schrott abgeliefert hat. Er sollte möglichst sofort wissen das was nicht geklappt hat. Das spart Zeit und Bandbreite.


----------

