Problem beim Senden von Client zu Server

avus17

Mitglied
Also ich bin gerade dabei mich in die Netzwerkprogrammierung einzuarbeiten. Daher programmiere ich gerade ein Chat. Jedoch habe ich nun immer ein Problem mit dem Versenden der Daten. Ich versende mit:
Java:
try {
					
					out.write(input.getText());
					out.newLine();
					out.flush();
					//sock.shutdownOutput();

				} catch (IOException e2) {
					e2.printStackTrace();
				}
Nun habe ich das Problem dass das Senden nur funktioniert wenn ich "sock.shutdownOutput();"
dahinter schreibe. Jedoch kann ich dann ja nur einmal twas versenden und nicht mehrmals. Lasse ich es weg, passiert eigentlich garnichts.
Kann mir einer sagen woran das liegt, und wie man das lösen kann???
Ich wäre über Hilfe sehr dankbar.
 
Zuletzt bearbeitet:

avus17

Mitglied
Ok dann poste ich nochmal etwas mehr on dem Code:

Beim drücken des "start"-Buttons werden die Reader, und der Socket ... erstellt.
Server-IP und Port werden vorher in einem Menü eingegeben und in den Variablen
serverIP und serverPort gespeichert.
Der Inhalt aus der JTextArea "input" soll bein drücken des senden-Buttons an den server gesendet werden.

Java:
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand()== send.getActionCommand()){
			try {	
				out.write(input.getText());
				out.newLine();
				out.flush();
				//sock.shutdownOutput();
			} catch (IOException e2) {
				e2.printStackTrace();
			}
		         input.setText("");
		}

                .......

		if(e.getActionCommand()== start.getActionCommand()){
			try {
				started = true;
				// create socket, Input and output stream
				InetAddress Server_IP = InetAddress.getByName(serverIP);
				sock = new Socket(Server_IP,serverPort);
				in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
				out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
				// start Thread to receive from server
				reciever = new Thread(this);
				reciever.start();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}

Außerdem wird beim drücken des "start"-Buttons ein Thread gestartet, welcher auf Nachrichten vom server wartet, und diese anzeigt:

Java:
	public void run() {
		while(started){
			try {			
				String tmp = in.readLine();
					if (tmp != null){
						addToOutput(tmp + "\n");
						setOutput();
					}
			}	
			 catch (IOException e1) {
				e1.printStackTrace();
			}
		}
	}

Wenn ich mit "socket.shutdownOutput()" das Programm starte, gibt der Server die Nachricht aus.
Wenn ich es aber weglasse ist nichts zu sehen, auch keine Fehlermeldungen in der Konsole etc.
 

avus17

Mitglied
Also ich habe das ganze jetzt mal durch den Debugger von Eclipse laufen lassen.
Eigentlich läuft alles genau so ab, wie es soll, nur dass eben nichts gesendet wird.
Die Eingegebenen Zeichen kann man im Debugger auch im BufferedWriter finden, sie werden nur nicht gesendet. Kann es sein dass das flush() nicht richtig funktioniert??? Wenn es hilft kann ich auch nochmal den kompletten Code hochladen.

EDIT:

Ich habe gerade noch mal den Server durch den Debugger laufen lassen, und dort kommt absolut nichts an. Vondaher denke ich mal es wird irgendwie am flush() liegen oder???
 
Zuletzt bearbeitet:

avus17

Mitglied
Also ich habs nochmal getestet, diesmal so:
Java:
public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand()== send.getActionCommand()){
			
				try {
					inputString = input.getText();
					outputSt.write(inputString.getBytes());
					outputSt.flush();
					/*out.write(input.getText());
					out.newLine();
					out.flush();
					//sock.shutdownOutput();
					  */
					

				} catch (IOException e2) {
					e2.printStackTrace();
				}
			input.setText("");
		}
		
...

		if(e.getActionCommand()== start.getActionCommand()){
			try {
				started = true;
				// create socket, Input and output stream
				InetAddress Server_IP = InetAddress.getByName(serverIP);
				sock = new Socket(Server_IP,serverPort);
				in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
				out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
				outputSt = sock.getOutputStream();
				// start Thread to receive from server
				reciever = new Thread(this);
				reciever.start();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		}

Jedoch erhalte ich imernoch nur eine Nachricht am Server wenn ich ein sock.shutdownOutput();
dahinter setze. Ich hab es auch schon ohen flush(); getestet, funktioniert aber auch nicht.


Ich habe mal im Anhang den ganzen Code hochgeladen. Beim Server sind einige Buttons und ein Eingabefeld das nicht genutzt wird, also einfach wegdenken. Vor dem Start muss man beim Server oben im Menü den Port angeben, und beim Client muss man vor dem starten die Server-IP und den Server-Port eingeben.
 

Anhänge

  • Chat V1.0.1.zip
    11,6 KB · Aufrufe: 1
Zuletzt bearbeitet:

avus17

Mitglied
Ich habe das Programm gerade noch einmal gestestet, und festgestellt, dass ich vom Server zu Client senden kann. Kann es sein dass der socket vom client irgendwie durch das ständige warten auf servernachrichten blockiert wird???

Das warten habe ich so realisiert:
Java:
    public void run() {
            while(started){
                try {          
                    String tmp = in.readLine();
                        if (tmp != null){
                            addToOutput(tmp + "\n");
                            setOutput();
                        }
                }  
                 catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
 

anti-held

Bekanntes Mitglied
Wenn das Warten und das Senden in verschiedenen Threads passieren, blockieren sie sich nicht gegenseitig.

Schreibe dein Programm so um, dass nach jedem gesendetem Text der Socket geschlossen wird.
Für jeden Text gibt es einen eigenen Socket.
Der Server wartet sowiso in der Schleife auf anfragen.
Und da anscheinend bei einem [c]socket.close();[/c] alles versendet wird sollte es funktionieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem beim Senden von File Netzwerkprogrammierung 4
V Problem beim Senden von Dateien Netzwerkprogrammierung 4
R Problem beim Senden von Emails (Javamail) Netzwerkprogrammierung 2
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
M Problem beim Datenempfang Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
Rontu Problem beim Übertragen einer Datei Netzwerkprogrammierung 9
P problem beim schließen eines Streams Netzwerkprogrammierung 6
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
J Problem beim versenden von eigenen Objekten über RMI Netzwerkprogrammierung 2
M problem beim schicken von XML-DAtenpacketen via TCP Netzwerkprogrammierung 3
I Socket Problem mit den WebSocket Antworten der Discord API Netzwerkprogrammierung 0
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
C RMI Produzent-Verbraucher-Problem - Code review Netzwerkprogrammierung 12
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
S Problem bei dem Bluetoothverbindungsaufbau Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
M Netty - TCP Problem Netzwerkprogrammierung 4
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
D Socket BufferedWriter/Reader Problem Netzwerkprogrammierung 1
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
C Handle Connection Problem Netzwerkprogrammierung 3
E HttpUrlConnection Cookie Problem Netzwerkprogrammierung 0
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
G Problem mit einem FileWatcher Netzwerkprogrammierung 7
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
G Problem mit STATIC-Verständnis Netzwerkprogrammierung 8
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 7
B Socket Problem mit Netzwerkchat Netzwerkprogrammierung 21
Maxim6394 ipv6 Problem Netzwerkprogrammierung 2
Maxim6394 Proxyserver Performance Problem Netzwerkprogrammierung 11
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 5
B RMI und Problem mit rmic-Tool Netzwerkprogrammierung 3
C FTP storeFileStream Problem Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
D JavaMail - Mailsabrufen Problem (imap) Netzwerkprogrammierung 12
J HTTP Übersetzung yahoo babelfish - Zeichensatz-Problem Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
D Thread problem Netzwerkprogrammierung 3
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
P RMI Stub Problem Netzwerkprogrammierung 3
D Socket UDP Übertragungs Problem Netzwerkprogrammierung 7
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
D Problem mit ObjectInputStreams Netzwerkprogrammierung 10
D Socket Problem mit InputStreamReader Netzwerkprogrammierung 3
N CRC32 CheckSum Problem bei UDP Netzwerkprogrammierung 2
V Java Mail Api - IMAP Problem Netzwerkprogrammierung 6
P RMI Problem Netzwerkprogrammierung 4
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
S Socket Problem mit Objektübertragung Netzwerkprogrammierung 16
Shoox Reader / Writer Problem Netzwerkprogrammierung 2
S Problem mit 2 Serversockets unter Win XP Netzwerkprogrammierung 7
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
M RMI - Connection Problem Netzwerkprogrammierung 7
J Socket Client - Server Problem Netzwerkprogrammierung 4
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
T Problem bei Findung der richtigen Architektur Netzwerkprogrammierung 3
AlexSpritze Authentication Problem bei WebServices Netzwerkprogrammierung 4
J Socket Problem -Proxies Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
F Konzept Problem Netzwerkprogrammierung 12
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
W RMI Problem Netzwerkprogrammierung 4
M Problem mit Server Netzwerkprogrammierung 5
N Socket Java server c# client problem Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben