TCP Client socket

ryane

Mitglied
Hallo leute ,
Ich bin neue in Java und bastele grade an einem GUI , was eine server verbindung herstellen soll und daten empfangen.
Ich habe im Netz viele implementierungen gesehen aber damit konnte ich mein Problem bis jetzt nicht lösen. Ich erkläre euch mein vorhaben :
Mein Client ist ein GUI , er soll nachhrichten in 1000ms abstände zum server schicken. er bekommt die Antworten und muss jede antwort separat lesen und in ein dafür gesehenes jTable einfügen.
Danach soll das protocol weiter laufen und gegebensfalls die Tables mit neuen werte aktualisieren.

kann mir bitte jemand über das vorgehen helfen ?
ich habe es versuch es funktioniert nicht wirklich.

Danke im vorraus
 
Zuletzt bearbeitet:

ryane

Mitglied
Danke für deine Antwort.
Ich kann bis jetzt nur eine Nachricht senden , empfangen und in sein Table einfügen. Ich kriege es nicht hin andere hinterher abzuschicken und die entspechende Antworten einzulesen. Was muss ich für diese Koordination machen ?
Wie schicke ich Nachrichten in 100ms Abstände und wie kann ich sicherstellen , dass ich genau die dazugehörige Antwort einlese ?
gibt es auch einen trick um zu überprüfen, ob daten zum einlesen verfügbar sind ?

das Abschicken muss natürlich auch gestoppt werden sobald ich die verbindung unterbreche.
Danke!
 

Kaffeebohn

Bekanntes Mitglied
Wahrscheinlich wirst du an Threads nicht vorbeikommen.

Ein Thread übernimmt z.B. das Senden von Daten, dabei kannst du den Thread mit Thread.sleep(1000) immer eine Sekunde lang schlafen legen bevor er ein neues Paket versendet. Den Stream schließt du dabei einfach nicht, sonst bricht die Verbindung ab.

Wenn du einen Stream einliest, dann wartet die Methode ja für gewöhnlich immer solange, bis neue Nachrichten kommen. Du verarbeitest dann also immer die gerade einkommenden Nachrichten, ansonsten verbringst du die Zeit mit warten (Methode blockiert).


Sobald du die Verbindung unterbrichst werden auch alle offenen Streams bzw. deren Sockets geschlossen.

Hilft dir das?

Grüße
 

Kr0e

Gesperrter Benutzer
Zeige uns Code... Pauschalantworten von uns sind für dich nicht hilfreich.

Z.B: "[...] gibt es auch einen trick um zu überprüfen, ob daten zum einlesen verfügbar sind ?"
Antwort: Ja.

Hilft dir aber nicht weiter. Außerdem hört es sich so, als wenn du keinen separaten Thread fürs Lesen vom Socket nutzt.
Also einfach mal den relevanten Code hier posten und wir können dir sicherlich im Handumdrehen helfen ;)

Gruß,

Chris
 

ryane

Mitglied
gibt es auch einen trick um zu überprüfen, ob daten zum einlesen verfügbar sind ?
ich habe mit dem folgenden code geprüft :
public boolean DataAvailable() {
return in!=null; // wobei "in" mein inputStream is
}


was der Thread angeht habe den folgenden code geschrieben , leider lauf er nicht die ganze zeit sondern nur ein mal


Java:
public void sendCommand(final String command)
   {
      Thread  sendThread = new Thread ( new Runnable() {@Override
         public void run() {
               try {
            out = socket.getOutputStream();
            PrintWriter outStream = new PrintWriter(out,true);
            outStream.println(command+end);
            outStream.flush();
           sendCommand("hallo");
            } catch (IOException ex) {
            state_label.setText("State: send Message failed!!!" +ex.getCause());
           }
                try {
                    Thread.sleep(100);
                    
                } catch (InterruptedException ex) {
                    Logger.getLogger(Profiler1.class.getName()).log(Level.SEVERE, null, ex);
                }
               readMsg(); // hier lese ich wieder den input stream
     }});
  }

soll ich auch die readMsg() in einem Thread einbauen ?
 
Zuletzt bearbeitet:

Kaffeebohn

Bekanntes Mitglied
Hiho,

also erst mal zum Lesen. Ich weiß ja nicht was du für einen Reader benutzt, aber z.B. bei einem BufferedReader liest man Zeilen ja so:

Java:
String incoming = reader.readLine();

Diese Methode blockiert so lange, bis eine Zeile kommt, diese wird dann gelesen und kann weiterverarbeitet werden. Du musst also z.B. eine while(true) {} Schleife drumrumbauen die immer wieder an dieser Methode stehen bleibt um auf neuen Input zu warten. Das muss in einem extra Thread geschehen damit deine ganze Anwendung nicht hängt.


//EDIT

Wenn ich dich richtig verstanden habe, dann sieht dein "Protokoll" ja vor, dass deine Anwendung etwas an den Server sendet, die Antwort abwartet und dann nach 1000 ms wieder etwas sendet.
Dann könntest du grundsätzlich der Einfach heit halber das ganze so ablaufen lassen (im extra Thread):

Java:
out = socket.getOutputStream();
PrintWriter outStream = new PrintWriter(out,true);


while(true) {

outStream.println(command+end);
outStream.flush();

// HIER DIE ANTWORT EINLESEN UND VERARBEITEN



}
 
Zuletzt bearbeitet:

Kr0e

Gesperrter Benutzer
An dem Code stimmt was nicht!
Dein Thread da drinnen wird NIE gestartet! Du musst sendThread.start() aufrufen.
ABER: Bei deinem Code würde dann sowieso eine Endlosschleife entstehen:

Java:
public void sendCommand(final String command)
   {
      Thread  sendThread = new Thread ( new Runnable() {@Override
         public void run() {
               try {
            out = socket.getOutputStream();
            PrintWriter outStream = new PrintWriter(out,true);
            outStream.println(command+end);
            outStream.flush();
           sendCommand("hallo"); //Macht das nicht ne Dauerschleife ? Du öffnest doch quasi nach einem Aufruf von sendCommand immer wieder SendCommand...
            } catch (IOException ex) {
            state_label.setText("State: send Message failed!!!" +ex.getCause());
           }
                try {
                    Thread.sleep(100);
                    
                } catch (InterruptedException ex) {
                    Logger.getLogger(Profiler1.class.getName()).log(Level.SEVERE, null, ex);
                }
               readMsg(); // hier lese ich wieder den input stream
     }});
  }
 

ryane

Mitglied
Danke jungs !
Jetzt funktioniert !!! ich habe die anweisungen von kaffebohn gefolgt
hat noch zwar ein paar Macken , aber die werde ich selber lösen... hoffe ich ;)

noch mal vielen dank !!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Client sendet nur, wenn das Socket geschlossen wird Netzwerkprogrammierung 53
S Socket (client) verbindet nicht Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
D Client Socket mit Eventlistener? Netzwerkprogrammierung 5
P Socket neuer Client - neue(r) Socket/Verbindung geöffnet? Netzwerkprogrammierung 6
Y client server socket via internet Netzwerkprogrammierung 8
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
J Socket - Remote/Client Mac-Adresse? Netzwerkprogrammierung 3
W Socket Client-Server Verbindung. Wie Strings senden? Netzwerkprogrammierung 6
S Socket - client - verlassen feststellen Netzwerkprogrammierung 6
M Client Socket neu instanzieren ? Netzwerkprogrammierung 3
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
B Axis2 Webservice mit Client Zertifikat Authentifizierung Netzwerkprogrammierung 3
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
T Jetty mit Client-Zertifikat nur bei spezifischer URL Netzwerkprogrammierung 1
J Einlesen von Servernachrichten von TCP-Client Netzwerkprogrammierung 17
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
T Client zu Client Kommunikation Netzwerkprogrammierung 2
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
G Server-Client IO Problem Netzwerkprogrammierung 6
ruutaiokwu ständig "sender address rejected: improper use of smtp" bei smtp-client Netzwerkprogrammierung 4
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Chatserver/-client - Code stoppt bei readUTF() Netzwerkprogrammierung 7
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
L Zugriffprobleme Client - Webservice AspenTechnology Netzwerkprogrammierung 0
A Client Client Übertragung Netzwerkprogrammierung 12
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
K Socket Netty Client wirft Fehler! Netzwerkprogrammierung 3
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
U Client Soap Verbindung wieder schließen Netzwerkprogrammierung 0
U Socket Client mit hash authentifizieren Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
P Server als Client nutzen Netzwerkprogrammierung 8
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
J Client - Serversocket Netzwerkprogrammierung 1
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
N Fragen zu Sockets Client Netzwerkprogrammierung 3
F Extasys TCp Client extends Funktion Netzwerkprogrammierung 0
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
A Socket Wie ein einfacher Multithreads Service mit Telnet als Client mit Observable/Observer gelöst.... Netzwerkprogrammierung 0
K C# Server - Android Client Netzwerkprogrammierung 0
T Application Client NullPointerExc Netzwerkprogrammierung 7
V TCP Client funktioniert auf Emulator aber nicht auf Smartphone Netzwerkprogrammierung 5
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
N FTP FTP Client invalid IPv6 address (Apache Commons Net API) Netzwerkprogrammierung 6
F TCP Client, verbindung aufrecht halten Netzwerkprogrammierung 0
X RMI: Woher kennt der Client das Schnittstellen-Interface? Netzwerkprogrammierung 2
E Thematik Client server Netzwerkprogrammierung 2
D UDP Client empfängt nichts 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 Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
N Client Identifikation eines Servers Netzwerkprogrammierung 1
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
D SSH Client Netzwerkprogrammierung 7
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
B TCP Client Android Netzwerkprogrammierung 3
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
OnDemand Ist Client noch angemeldet? Netzwerkprogrammierung 7

Ähnliche Java Themen


Oben