Kommunikationsproblem zwischen JAVA-client und C-Server

Status
Nicht offen für weitere Antworten.
R

RugerRell

Gast
Hi zusammen,

hab eine serveranwendung in c geschrieben, welche steuerkommandos in form eines einfachen strings von einem in java-geschriebenen clienten entgegennimmt.

Danach wird der string verarbeitet, der server führt diverse aktionen durch und schickt die ergebnisse in form von einfachen strings zurück an den clienten, welcher diese ausgibt.

Das prinzip ist dem eines echo-server/-clients sehr ähnlich.

Problem: Ich öffne den clienten, verbinde zum server und schicke meinen string. Soweit läuft alles ok. Danach kann ich keine weiteren kommandos zum server senden. D.h.: Ich kann immer nur 1 kommando senden. Alle weiteren werden ignoriert. Nur ein neustart das java-clients ermöglicht mir wiederrum ein kommando zu schicken.

Hier der code des java tools:

Code:
import java.net.*;
import java.io.*;

/**
 * 
 */

/**
 * @author bin4ry
 *
 */
public class echoCl1 {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;
	
    try
    {
	echoSocket = new Socket("localhost", 31337);
	out = new PrintWriter(echoSocket.getOutputStream(), true);
	in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
    }
    catch (UnknownHostException e)
    {
                System.err.println(e.toString());
	System.exit(1);
    }
    catch (IOException e)
    {
	System.err.println(e.toString());
	System.exit(1);
    }
	
    BufferedReader stdIn =  new BufferedReader(new InputStreamReader(System.in));
    String userInput;
    
    try{
	while ((userInput = stdIn.readLine()) != null)
                {
	    if(userInput.equals("EXIT"))
                    {
	        	break;
	    }
	    System.out.println("userInput: " + userInput);
	    out.println(userInput);
	    System.out.println("echo " + in.readLine());
	}
	out.close();
	in.close();
	stdIn.close();
	echoSocket.close();
    }
    catch (Exception e)
    {
	System.err.println(e.toString());
    }
}
}

Wo liegt der fehler? Evtl. doch im server?

Danke.
 
R

RugerRell

Gast
Habs überprüft. liegt nicht am client. Muss am server liegen
 
T

tuxedo

Gast
Wenn du als registrierter User den Thread eröffnet hättest könntest du ihn jetzt als "erledigt" abhaken.

- Alex
 
R

RugerRell

Gast
Hey alex,

ja stimmt, bin aber nicht registriert.

Hab eine weitere frage zum selben thema:

Ich hab das soweit hinbekommen, nun hab ich wieder ein problem mit dem clienten:

Er schickt nun das gewünschte steuerkommando und der server antwortet wie gewünscht darauf. Ich hab den clienten so modifiziert, dass er mehr als nur einen string entgegen nimmt. Jedoch erkennt er irgendwie nicht richtig das "ende" der übermittlung vom server zum clienten. D.h. wenn der server fertig ist mit senden der ergebnisse an den clienten, erkennt der client das ende nicht und springt nicht richtig aus der while-schleife, sodass eine erneute kommunikation erneut behindert wird.

Kann mir jemand einen tipp geben, wie ich das problem umgehen kann? Hier der neue quellcode des clienten:



Code:
import java.net.*;
import java.io.*;

/**
 * 
 */

/**
 * @author bin4ry
 *
 */
public class echoCl1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Socket echoSocket = null;
		PrintWriter out = null;
		BufferedReader in = null;
		
		try
		{
			echoSocket = new Socket("localhost", 31337);
			out = new PrintWriter(echoSocket.getOutputStream(), true);
			in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
		}
		catch (UnknownHostException e)
		{
			System.err.println(e.toString());
			System.exit(1);
		}
		catch (IOException e)
		{
			System.err.println(e.toString());
			System.exit(1);
		}
		
		BufferedReader stdIn =  new BufferedReader(new InputStreamReader(System.in));
		String userInput;
		String netInput;
		try{
		while ((userInput = stdIn.readLine()) != null)
		{
			if(userInput.equals("EXIT"))
			{
				break;
			}
			System.out.println("userInput: " + userInput);
			out.println(userInput);
			
        /* Die besagte schleife....das die abbruchbedingung ist wohl nicht korrekt */
        while((netInput = in.readLine()) != null)
			{
				System.out.println(netInput);
			}
			System.out.println("exiting while");
		}
		out.close();
		in.close();
		stdIn.close();
		echoSocket.close();
		}
		catch (Exception e)
		{
			System.err.println(e.toString());
		}
	}
}

Es ist bestimmt ein sehr trivialer fehler, aber ich bin recht neu beim thema java.

Danke für hilfe
 
T

tuxedo

Gast
Der Client springt nur aus der Schleife raus, wenn der Server die verbindung kappt. Wenn der Server keine Daten mehr durch den Socket sendet, heisst das ja noch lange nicht dass er fertig ist. Woher soll der Socket denn wissen ob nicht doch noch was kommt?

Entweder du lässt den Server nach dem senden der Antwort die Verbindung schließen, oder der Client weiß aufgrund der "korrekt" eingegangenen Antwort dass "alles da ist" und schließt die Verbindung selbst.

- Alex
 
R

RugerRell

Gast
Hey alex,

ja danke. Hatte auch schon an sowas gedacht, wie du es in deiner 2. lösung vorschlägst:

Ich lass also vom server am ende der übertragung einen definierten string schicken. Und das eingehen dieses strings ist für den clienten die abbruchbedingung?

Ich probier das mal aus.

Bis später
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
J VideoStreaming zwischen 2 Geräten Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
D Chatprogramm zwischen zwei ChatClients (aktiv/passiv) Netzwerkprogrammierung 1
J Direkter Datenaustausch zwischen Servern Netzwerkprogrammierung 5
V Unterschied zwischen cURL und HttpURLConnection?? Netzwerkprogrammierung 2
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
B Verbindung zwischen Client und Server Netzwerkprogrammierung 2
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
M RMI zwischen verschiedenen Java Versionen Netzwerkprogrammierung 2
N UDP zwischen Java und C++ funktioniert nicht. Netzwerkprogrammierung 4
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
S Java Chat Server Netzwerkprogrammierung 8
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
T curl request in java umwandeln Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1
H Portforwarding umgehen in Java? Netzwerkprogrammierung 5
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben