Socket Abhören eines Sockets/Ports in extra Thread

userSeb

Mitglied
Hallo,
ich versuche mich gerade an der Kommunikation zwischen einem VB-Programm und einem Java-Programm (siehe auch meine anderen Forumsbeträge).

Realisiert wird dies über eine Socket-Verbindung (VB als Server, Java als Client). Senden funktioniert wie gewünscht. Den Abhörvorgang wollte ich in einen extra Thread auslagern.

Java:
listeningThread = new Thread() {
            public void run () {
            	try {
      			  InputStream in = socket.getInputStream();
      			  InputStreamReader isr = new InputStreamReader(in);
      			  BufferedReader br = new BufferedReader(isr);
      			  int i;
	      			 while(true){
		      			 while ((i = br.read()) != -1) {
		      			   System.out.print((char) i);
		      			 }
		      			 System.out.println("end");
		      		}
            	}
      			catch (IOException ex) {
      			}
            }
            	
       };
       listeningThread.start();

Dabei sind mir aber noch etwas unklar. Warum erreiche ich nie das "end". Ich bekomme immer nur den String auf die Konsole, den ich auch sende. Und, bei genauerer Betrachtung hätte ich auch erwartet, dass unabhängig davon, ob

Java:
i != -1

immerzu auf der Konsole "end" ausgegeben wird (wegen der Endlosschleife). Wo ist mein Denkfehler?

Über Anregungen wäre ich sehr dankbar.

viele Grüße
 
S

SlaterB

Gast
eine Endlosschleife bedeutet doch gerade dass der Befehl danach NICHT ausgeführt wird,
System.out.println("end");
steht nicht in der Schleife?

ohne sinnvolle Begründung klingt deine Frage wie:
'ich fahre auf dem Nürburgring immer im Kreis, ich hätte jetzt erwartet in New York anzukommen, wieso nicht, wo ist mein Denkfehler?'
 

userSeb

Mitglied
ah, OK. ich verlasse die innere while-Schliefe nie. Das habe ich übersehen. Sorry dann wars tatsächlich ne dumme Frage.
Hast du eine Empfehlung für eine Abbruchbedingung, wenn ein Datenpaket vollständig gesendet wurde (ich schicke Strings)? Ich will die Strings als Attribut an der Stelle wo jetzt ein einfaches "end" ausgegeben wird, an eine Methode übergeben und dannach wieder auf neuen Empfang warten.
 
S

SlaterB

Gast
lies eine ganze Zeile auf einmal ein (auf Zeilenumbruch \n achten beim Senden!) oder lies ein großes char[] auf einmal ein,
damit jede Nachricht in nur einem Lesevorgang ankommt, was für einfache Fälle klappen sollte,
dann kannst du direkt in die Schleife den Verarbeitungsbefehl schreiben

Alternativen:
- komplett eigenes Protokoll, am Ende einer Nachricht, evtl. auch am Beginn bestimmte Kontrollinformationen wie XML-Tags
<nachricht>...</nachricht>
- zeitliche Bearbeitung: wenn nach x ms nix mehr kommt dann ist wohl ein zusammenhängender Block gefunden,
entweder auf das read() einen Timeout, falls möglich, sonst mit zwei separaten Threads bearbeiten,
einer hängt im read(), der andere prüft die Zeit seit der letzten Übergabe eines gelesenen Zeichens, hat alles bisherige gesammelt
 
Zuletzt bearbeitet von einem Moderator:

userSeb

Mitglied
Hab mich für die erste Alternative entschieden...

Java:
while(true){
  while (((i = br.read()) != -1) & !(String.valueOf((char)i).equals("#"))) {
    //System.out.print((char) i);
    sb.append((char) i); //StringBuffer
  }
  JOptionPane.showMessageDialog(null,sb,"Message from VB", JOptionPane.INFORMATION_MESSAGE);
  sb = sb.delete(0, sb.length());
}

danke nochmal!
 
S

SlaterB

Gast
immer && statt & verwenden!

und
!(String.valueOf((char)i).equals("#")
ist gleich
i != '#'
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Port abhören Netzwerkprogrammierung 11
M Mehrere Ports gleichzeitig abhören Netzwerkprogrammierung 5
H Port abhören Netzwerkprogrammierung 3
M SocketError bei Aufruf eines SOAP-Servers Netzwerkprogrammierung 8
G seite nach posten eines html-forms laden Netzwerkprogrammierung 0
J Protokolle innerhalb eines Heimnetzwerks Netzwerkprogrammierung 6
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
X Response eines RESTful-Service mit JSON Netzwerkprogrammierung 8
F Neuer Json aus teilen eines vorhandenen Json Netzwerkprogrammierung 0
N Client Identifikation eines Servers Netzwerkprogrammierung 1
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
K Multiplayer eines Spiels Netzwerkprogrammierung 21
K Ansprechen eines Remote Druckers Netzwerkprogrammierung 2
L Erstellen eines Online Multiplayer Apps Netzwerkprogrammierung 10
eLogic Download eines Links Netzwerkprogrammierung 2
2 Schliessen eines Serversockets Netzwerkprogrammierung 2
Hindi93 Abbruch eines Programmes abfangen Netzwerkprogrammierung 8
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
C Alle Computer eines Netzwerkes finden Netzwerkprogrammierung 32
N Senden eines Arrays Netzwerkprogrammierung 6
U Name eines Netzlaufwerks ermitteln Netzwerkprogrammierung 5
L Body eines http Request auslesen Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
aze Tcp Verkehr eines Applets simulieren Netzwerkprogrammierung 10
J Socket Erreichbarkeit eines Java Servers (Socket-Lösung) über das Internet Netzwerkprogrammierung 3
M Socket Leistungsfähigkeit eines xSocketservers, wieviele Verbindungen max? Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
K TrafficClass eines UDP Pakets kommt beim Empfänger nicht an Netzwerkprogrammierung 5
musiKk Problem bei bidirektionaler Nutzung eines Socket Netzwerkprogrammierung 2
J Machbarkeit eines Bluetooth-Servers? Netzwerkprogrammierung 2
S Realisierung eines Netzwerkcodes für ein Strategiespiel Netzwerkprogrammierung 7
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
P problem beim schließen eines Streams Netzwerkprogrammierung 6
K Mit Java-MailAPI dir Verfügbarkeit eines SMTP-Servers prüfen Netzwerkprogrammierung 4
J while-Schleife / Abbruchbed. beim Einlesen eines Streams Netzwerkprogrammierung 4
U Ende eines Inputstreams ermitteln Netzwerkprogrammierung 3
J Länge eines Streams Netzwerkprogrammierung 4
T Timeout eines KSOAP-Calls Netzwerkprogrammierung 5
G Info eines Webseites kopieren Netzwerkprogrammierung 16
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
E Möglichkeit zum Timeout eines Process Netzwerkprogrammierung 7
T Erstellung eines Proxy Netzwerkprogrammierung 11
T Pfad eines Servlets rausfinden Netzwerkprogrammierung 2
O Einbinden eines java-servers Netzwerkprogrammierung 9
C Übergabe eines Datensatzes (Übergabestruktur) Netzwerkprogrammierung 12
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
B Problem mit der Ausgabe eines Strings an SocketOut Netzwerkprogrammierung 4
Jannn Socket Sockets an ein anderes Gerät weiterreichen? Netzwerkprogrammierung 8
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
D Socket Verwirrung bei Sockets Netzwerkprogrammierung 1
E Mehrere Sockets Netzwerkprogrammierung 2
N Fragen zu Sockets Client Netzwerkprogrammierung 3
A Sockets Serialisierung Netzwerkprogrammierung 1
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
C Socket Datagram-Sockets mit integrierter Message Queue? Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
F Technologiewahl: Swing/RMI/Sockets Netzwerkprogrammierung 13
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
M Socket Sockets Grundlage Netzwerkprogrammierung 25
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
D Socket Raw Sockets mit java.net.*? Bsp ICMP Netzwerkprogrammierung 7
H Komprimierte Sockets Netzwerkprogrammierung 4
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
L Sockets übergeben Netzwerkprogrammierung 4
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
B Socket Was muss man bei Sockets beachten? Netzwerkprogrammierung 10
N Socket Sockets und Events Netzwerkprogrammierung 11
A Programm umschreiben von Pipes auf Sockets Netzwerkprogrammierung 12
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16
D RMI oder Sockets Netzwerkprogrammierung 4
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Sockets -- Einsieg Netzwerkprogrammierung 3
S Sockets und gzip Netzwerkprogrammierung 8
B Nachricht über Sockets kommt nicht an Netzwerkprogrammierung 8
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
S Wiedereinmal Sockets ;-) Netzwerkprogrammierung 15
J Ascii / Unicode bei Sockets? Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
A Sockets Netzwerkprogrammierung 10
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
E Sockets, readLine() Netzwerkprogrammierung 7
M Sockets und InputStream Netzwerkprogrammierung 8
G Verbindung über Sockets Netzwerkprogrammierung 2
S zip-files über sockets übertragen Netzwerkprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben