TCP- Verbindung

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,


ich habe 2 Java Applikationen über TCPIP verbunden.
Meine Frage wäre jetzt, ob es möglich ist, dass ich Daten in meinen Socket- Receivebuffer bekomme, dadurch eine Exception ausgelöst wird oder eine Variable auf true gesetzt wird und ich dann die Daten auslese. Beim nächsten empfangen von Daten das gleiche Spiel.
Ist das zu realisieren. Ich habe jetzt einen BufferedInputStream und lese mit einer while- Schleife der Reihe nach ein,
möchte aber, wenn etwas empfangen wurde, dass ich davon bescheid bekomme und dann auslese.

Mein Problem ist auch, ich bekomme in gewissen Zeitabständen Daten ohne Header, also es soll im ReceiveBuffer schon das richtige drinnenstehen.

Vielleicht habt ihr da irgendwelche Ideen.
Ich wäre euch sehr dankbar dafür!!

lg
Michael
 
S

SlaterB

Gast
du hast auf jeder Seite einen Thread, der Daten empfängt, sich diese Daten anschaut und auf beliebige Weise darauf reagiert,

wenn er bei 'xy' eine Exception vom Typ z werfen soll, dann programmiere ihn so und dann ist es so ;)

einen allgemeinen Thread zu bauen, der immer auf Nachrichten hört, während das normale Programm weiterläuft,
ist natürlich nicht ganz einfach, das stimmt,
in Kapitel zu Sockets in Lehrbüchern sollten aber entsprechende Beispiele dabei sein,
wie verwaltest du denn bisher die Sockets auf beiden Seiten?
 

MQue

Top Contributor
ich habe jetzt einen Thread, in dem eben die Daten eben in einer while-Schleife eingelesen wird.
Ich möchte aber eben , wenn der ReceiveBuffer voll ist, eine Meldung bekommen, möchte auch die Größe des Empfangsbuffers bestimmen - > das hängt ja von der Plattform ab, den kann ich ja leider nicht bestimmen, oder?

Michael


Code:
 while (stop == false) 
		{
		int getin = in.read();
 
S

SlaterB

Gast
was ist ein ReceiveBuffer, was ist ein Empfangsbuffer,
welcher Größe hat der/ haben die denn z.B. auf welchen System bzw. wenn du die Zahl nicht kennst, wieso vermutest du dass es da überhaupt eine Zahl gibt und die systemabhängig sein soll?
ich verstehe nur Bahnhof
 

MQue

Top Contributor
Hallo,

Socket sock = new Socket("irgendwas", Port);
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
sock.getReceiveBufferSize(); -- hier steht, dass die der Buffer Plattformabhängig ist

lg
 

DocRandom

Top Contributor
Moin!

..also irgendwie verstehe ich nicht, warum Du das über dien "ReciveBuffer" lösen willst.
Fest steht jedenfalls, das:
  • Client sendet
  • Server empfängt
  • Serve verarbeitet
  • Sever sendet an Client
Da Du ohnehin auswerten mußt, was wohin gesendet, bzw. emfangen wird, kannst Du darauf reagieren.
Ergo, brauchst Du Dir im Normalfall über Dir Buffergröße keine Gedanken zu machen.

mfg
DocRandom
 

MQue

Top Contributor
naja ich möchte einfach nur wissen, wann etwas ankommt und dann den Buffer in der Größe, in der ich ihn definiert habe, einfach auslesen.

lg
Michael
 
S

SlaterB

Gast
was stört dich denn an buffer.readXY mit Rückgabewert ob noch weitere Daten vorhanden sind?,
wenn du das in einer Schleife aufrufst bekommst du alle Daten die da sind,
auch die, die erst nach der ersten imaginären Anfrage nach der Größe während des Lesens neu ankommen..
 

MQue

Top Contributor
ich möchte halt definiert nur z.B. 640 Bytes einlesen, das sind dann meine originaldaten ohne header!!
ich hba nämlich keinen header und kann nicht sagen, wenn ihc das und das lese dann kommen danach die Daten!!

lg
Michl
 
S

SlaterB

Gast
und wo sollen die anderen Daten bleiben?
lies doch alle Daten ein und baue dir intern zwei Stufen,
eine die alle Daten hat,
und eine zweite die dann genau 640 davon abfragt?
 

DocRandom

Top Contributor
Michael1234 hat gesagt.:
ich möchte halt definiert nur z.B. 640 Bytes einlesen, das sind dann meine originaldaten ohne header!!
ich hba nämlich keinen header und kann nicht sagen, wenn ihc das und das lese dann kommen danach die Daten!!

lg
Michl

dann probiers mal auf diese Weise:

Code:
...
int len;
byte[] daten = new byte[640];
InputStream sIn = cSock.getInputStream();
while((len = sIn.read(daten)) != -1) {
...

Code ist jetzt nicht getestet, sondern gilt nur als Denkanstoß

mfg
DocRandom
 

MQue

Top Contributor
ich wie kann ich es machen, wenn ich weiß das zu Beginn - nach dem Verbindungsaufbau - 2 * 4Bytes kommen und dann eben immer 640 in regelmäßigen oder auch unregelmäßigen Abständen?

Danke!

lg
Michael
 
S

SlaterB

Gast
da waren wir oben schon ;)
SlaterB hat gesagt.:
du hast auf jeder Seite einen Thread, der Daten empfängt, sich diese Daten anschaut und auf beliebige Weise darauf reagiert,

wenn er bei 'xy' eine Exception vom Typ z werfen soll, dann programmiere ihn so und dann ist es so ;)

schaue dir bei jedem neuen Empfang an was da ist,
wenn 400 Bytes da sind, tue nix, wenn genau 640 oder auch 723 Bytes da sind, dann melde den erfolgreichen Empfang einer Nachricht usw.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Meeresgott Input/Output Java Socket Verbindung Allgemeine Java-Themen 1
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
D Socket Verbindung mit TLSv1 Allgemeine Java-Themen 1
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
M Verbindung zu Webserver schlägt fehl Allgemeine Java-Themen 0
B Technikfrage bzgl Verbindung von Frontend und Backend Allgemeine Java-Themen 0
G genestete SSH-Verbindung Allgemeine Java-Themen 4
B Webbrowser mit Proxy- Verbindung starten Allgemeine Java-Themen 6
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
D Socket Java Socket Verbindung Allgemeine Java-Themen 14
F Internet Verbindung verschlüsseln Allgemeine Java-Themen 17
F Verbindung mit einem UMTS-Stick herstellen um SMS zu empfangen Allgemeine Java-Themen 8
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
B verbindung mit exchange server Allgemeine Java-Themen 3
MQue FTP Verbindung download Allgemeine Java-Themen 5
R Socket verbindung mit Timeout Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Serielle Verbindung zu einem Handy Allgemeine Java-Themen 3
E iBatis und wie oft wird eine Verbindung hergestellt Allgemeine Java-Themen 5
E ftp verbindung mit javacode Allgemeine Java-Themen 5
S svnkit Verbindung über https Anleitung Allgemeine Java-Themen 6
E Verbindung über TCP Allgemeine Java-Themen 3
P Verbindung überprüfen Allgemeine Java-Themen 5
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G Verbindung zum Server Allgemeine Java-Themen 10
T Frage zu char in verbindung mit int Allgemeine Java-Themen 4
MQue Verbindung zweier Klasse Allgemeine Java-Themen 13
E Verbindung besteht/besteht nicht Allgemeine Java-Themen 5
E TCPIP- Verbindung Allgemeine Java-Themen 3
T RDP Verbindung mit Java herstellen Allgemeine Java-Themen 4
H sichere Datenbank-Verbindung Allgemeine Java-Themen 4
F Socket - Server verbindung Allgemeine Java-Themen 12
M Probleme mit URLClassLoader in Verbindung mit rmi Allgemeine Java-Themen 6
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
R ClassLoader funktioniert in Verbindung mit JAR-Datei nicht Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben