Client/Server: Auf Antwort warten?

Status
Nicht offen für weitere Antworten.

Angel4585

Bekanntes Mitglied
Hallo,

kleine Frage zum Programmierstil:

Ich hab ne Client Server Anwendung und schicke jetzt ein Objekt vom Client an den Server.

Nun soll der Server auf der selben Verbindung mir eine Antwort schicken. Allerdings soll mein Client auf diese Antwort warten und nicht nach dem versenden des Objektes an den Server einfach weitermachen.
Wie mache ich das am Besten?
Eine Extra Socketverbindung öffnen die diese "Abfrage" abarbeitet, oder die vorhandene Verbindung nehmen? Aber wie mache ich das am Besten bei nur einer Socket-Verbindung??
 
T

tuxedo

Gast
Hmm, kann es sein dass du den Wald vor lauter Bäumen nicht mehr siehst?

Wenn der Client auf eine Antwort warten soll, dann muss der Thread, der sich mit der Netzwerkkommunikation beschäftigt, mit einem blockierenden Read auf eine Antwort warten.

Ich nehme an du benutzt NIO mit non-blocking?

- Alex
 

Angel4585

Bekanntes Mitglied
genau, nio mit non-Blocking.

Ich habe einen Thread der auf Anfragen vom Server wartet und fordere nebenher über die selbe Socketverbindung Daten an.

Wenn ich Daten anfordere soll das Programm solang warten bis die da sind.

Wie gesagt, momentan geht das alles über eine Verbindung.

Allerdings wäre es auch gut wenn direkt in dem Frage-Thread auch das Ergebnis kommt und ich dann dort auch weiterarbeiten könnte, anstatt das ich ne Anfrage raus schick, den Frage-Thread beende, im Thread der den Eingang kontrolliert dann ne Antwort bekomm und wieder einen Thread starte der die Antwort auswertet. Das wär ein kompliziertes jonglieren denke ich.

Wie löst du/ihr das?
Mehrere Verbindungen wären ja machbar, nur dauert das Herstellen der Verbindung immer ewig, oder?
 
T

tuxedo

Gast
Ich glaub den Client kannst du ruhig im Blocking-Betrieb fahren. Am Server ist das ja was anderes bei vielen Verbindungen.

Am Client liegt es halt an dir eine "Ich schicke eine Frage und warte dann auf die Antwort"-Schicht zu implementieren. Ist also eher eine Designfrage.

AUSSER das Frage-Antwort-Spiel läuft asynchron und mehrere Fragen können rausgehen, worauf für jede Frage auf eine Antwort gewartet wird, jedoch in beliebiger Reihenfolge. Dann müsstest du die Antwort vom Server irgendwie kennzeichnen "ich bin die Antwort auf Frage XYZ". Aber auch hier ist das mit einer entsprechenden Schicht im Design kein Problem.

Wenn du bei non-blocking bleibst, dann kannst du mit einer Schleife wieder künstlich blocken bis die Antwort eingetroffen ist.

- Alex


P.S. Ich würde RMI benutzen. Aber da ist ja die Sache mit dem Callback etc. Und mein eigenes RMI, welches das "Problem" nicht hat, ist noch nicht einsatzbereit.
 

Angel4585

Bekanntes Mitglied
Also von RMI will ich momentan weg, weil die Sache mit dem Callback in einer anderen Anwendung die ich noch entwickle leider eine Bedingung ist und ich nicht zwei Anwendungen mit unterschiedlichen "Technologien" entwickeln möchte.

Ausserdem soll es tatsächlich so sein, dass mehrere Fragen raus gehn, und die Antworten in unterschiedlicher Reihenfolge zurückkommen. Aber ich hab da grad ne Idee, ich werd wohl ein IDObject erzeugen welches bei jedem anderen Object mit- und zurückgeschickt wird. Das werd ich die Tage mal testen ;)
 
T

tuxedo

Gast
Weiß ja nicht wie deine "Frage" und "Antwort" aussieht. Aber ich würde ein generelles Transportobjekt bauen. Eine Klasse von der alle "Fragen" und "Antworten", sowie alles was halt über's Netz geht erbt.

In der Klasse kannst du dann Nachrichtentyp und ID verankern. Dann einfach das Objekt via DataOutputStream versenden (oder halt selbst serialisieren). Auf der anderen Seite dann halt lesen, und wieder in das Transportobjekt casten. Dort kannst du dann anhand des darin enthaltenen Nachrichtentyps entscheiden, welche Art von Objekt es denn genau ist (Frage, Antwort, sonstwas) und das dann in das entsprechende, endgültige Zielobjekt casten.

RMI wäre halt für sowas prädestiniert. Bin mir mittlerweile sicher, dass eine Lib die eine RMI-Funktion zur verfügung stellt und dabei nur eine Socketverbindung nutzt und demnach auch über diese eine Socketverbindung Callback-fähig ist, in solchen Anwendungsgebieten, reißend absatz finden würde ... ;-)

- Alex
 

Angel4585

Bekanntes Mitglied
Ich hab momentan ein Interface "Sendable" das von Serializable abgeleitet ist und auch direkt die serialVersionUID beinhaltet.
Von diesem Sendable leite ich alle weiteren Objekte ab die ich versenden will.
 
T

tuxedo

Gast
Angel4585 hat gesagt.:
Ich hab momentan ein Interface "Sendable" das von Serializable abgeleitet ist und auch direkt die serialVersionUID beinhaltet.
Von diesem Sendable leite ich alle weiteren Objekte ab die ich versenden will.

Ja, das ist doch schon was. Wobei die serialVersionUID ja primär erstmal nur für's serialisieren gut ist.

Du könntest halt sowas hier machen:

Code:
class TransferObject implements Sendable {

private int transferType = 0;
private int transferID = 0;

public static final int TRANSFERTYPE_QUESTION = 0;
public static final int TRANSFERTYPE_ANSWER = 1;
public static final int TRANSFERTYPE_OTHER = 2;

public void setTransferType(int type){
this.transferType = type;
}

public void setTransferID(int ID){
this.transferID = ID;
}

public int getTransferType(){
return this.transferType;
}

public int getTransferID(){
return this.transferID;
}

}

Wenn alle deine übertragenen Objekte davon erben, hast du einen gemeinsamen Nenner und kannst sowohl Serverseitig als auch clientseitig mit der selben Klasse arbeiten und musst dann nur noch, entsprechend der TransferID in eine Zielklasse casten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Client/Server Antwort von Server empfangen Netzwerkprogrammierung 6
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
P Server als Client nutzen Netzwerkprogrammierung 8
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
K C# Server - Android Client Netzwerkprogrammierung 0
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
E Thematik Client server Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
N Client am Server abmelden Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
J Client Server - Serialisierung Netzwerkprogrammierung 8
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
K Client => Server Netzwerkprogrammierung 2
A ? Home-Network, Server/Client-Einrichtung Netzwerkprogrammierung 4
S Socket Server: ConnectionError vom Client erkennen Netzwerkprogrammierung 31
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
N Client-Server-Datenbank Netzwerkprogrammierung 13
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
B Client/Server Connection Problem Netzwerkprogrammierung 2
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
R Server zu Client Kommunikation Netzwerkprogrammierung 11
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
T Server und Client verbinden nicht Netzwerkprogrammierung 6
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
das-mo Client/Server sendet nicht Netzwerkprogrammierung 7
Z Socket Server/Client vernünftiger Verbindungsabbruch Netzwerkprogrammierung 4
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
F TCP Server/Client Netzwerkprogrammierung 14
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
N eine klasse mit server & client Netzwerkprogrammierung 5
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
T Socket Client versucht zyklische Verbindung zum Server Netzwerkprogrammierung 4
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
D Projektstruktur / Architektur (Client-Server) Netzwerkprogrammierung 9
P Socket IRC Client nicht kompatibel mit Server Netzwerkprogrammierung 30
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
B RMI Server - Client - Aufteilung/Prinzip Netzwerkprogrammierung 11
N Server Client TCP IP Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben