Streams mit Sockets

Status
Nicht offen für weitere Antworten.

Paddel

Bekanntes Mitglied
Mahlzeit mein Prob is das ich gerade en Chat Client mache. Der Server besitzt einen ServerSocket :
" int port = 50000;
private ServerSocket socket;
static private HashMap< String, Socket> teilnehmer = new HashMap<String, Socket>();
BufferedReader is = null;
DataOutputStream os = null;
Socket s = null;"
Bei einer neuen Verbindung gibt es en neuen Thread:
" Server(Socket s){
this.s = s;
this.run();
}
@Override
public void run() {
StringTokenizer tokenizer = null;

try {
is = new BufferedReader(new InputStreamReader(s.getInputStream()));
os = new DataOutputStream(s.getOutputStream());"

mein Client sieht nich gross anders aus:
" Socket s = null;


BufferedReader is = null;
DataOutputStream os = null;....
System.out.println("Start des CLients");
s = new Socket("127.0.0.1", 50000);
is = new BufferedReader(new InputStreamReader(s.getInputStream()));
os = new DataOutputStream(s.getOutputStream());..."
Vom Client mit os.writeBytes zu senden klappt super. Wenn ich aber vom Server zum Client senden will mit:"
os.writeBytes("OK");

und das mit dem Client empfangen will mit:"
String request = is.readLine();" klappt das nicht und es kommt die Exception:
"java.net.SocketException: Software caused connection abort: socket write error"

Kann mir da mal jemand elfen.
Danke und Gruss
 

musiKk

Top Contributor
Urks. Bitte
Java:
-Tags verwenden, damit mans ordentlich lesen kann.
 

Paddel

Bekanntes Mitglied
OK kleines ähnliches Beispiel was au nicht klappt:
Java:
package test;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	Socket socket;
		ServerSocket serverSocket;
		BufferedReader is;
		 DataOutputStream os;
		public Server() throws IOException {
			serverSocket = new ServerSocket(100); 

		}
		public void senden() throws IOException{
			socket = serverSocket.accept();
		    is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    os = new DataOutputStream(socket.getOutputStream());
		    
		    os.writeBytes("TEST");
		    System.out.println(is.readLine());
		    
		}
		public static void main(String[] args) throws IOException {
			Server server = new Server();
			Client client = new Client();
			server.senden();
			client.empfangen();
		}
}
und:

public class Client {
		Socket socket = null;
		BufferedReader is;
		 DataOutputStream os;
		public Client() throws UnknownHostException, IOException {
			socket = new Socket("127.0.0.1", 100);
		    is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    os = new DataOutputStream(socket.getOutputStream());
		}
		public void empfangen() {
			
			try {
				System.out.println(is.readLine());
				os.writeBytes("Test2");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
}
DAs sollte ja eigentlich Test und Test2 ausgeben und da verstehe ich meinen Fehler nicht so ganz...
 

Schandro

Top Contributor
Er wartet unendlich lange in Zeile 25.
Du rufst beim server in.readLine() auf bevor du client.senden() aufrufst.
 

musiKk

Top Contributor
Genau. Bei solchen Geschichten kommst Du nicht drum herum, das mit verschiedenen Threads zu lösen. Irgendwas blockiert sonst immer. Ob nun accept() oder read*()...
 

Paddel

Bekanntes Mitglied
hab das nun mal umgeschrieben:
Java:
package test;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server extends Thread{
	Socket socket;
		ServerSocket serverSocket;
		BufferedReader is;
		 DataOutputStream os;
		public Server() throws IOException {
			serverSocket = new ServerSocket(100); 

		}
		public void senden() throws IOException{

		    
		}
		@Override
		public void run() {
		
			try {
				socket = serverSocket.accept();
			    is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			    os = new DataOutputStream(socket.getOutputStream());
			    
			    os.writeBytes("TEST");
			    System.out.println(is.readLine());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
		public static void main(String[] args) throws IOException {
			Thread t1= new Server();
			Thread t2 = new Client();
			t1.start();
			t2.start();
		}
}
die 2te
Java:
package test;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client extends Thread{
		Socket socket = null;
		BufferedReader is;
		 DataOutputStream os;
		public Client() throws UnknownHostException, IOException {
			socket = new Socket("127.0.0.1", 100);
		    is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    os = new DataOutputStream(socket.getOutputStream());
		}
		public void empfangen() {
			
		
		}
		@Override
		public void run() {
			try {
				os.writeBytes("Test2");
				System.out.println(is.readLine());
			
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
}
Jetzt laufen die beiden doch parallel, sprich beide senden was Thread 1 sendet Thread 2 auch und dann können beide das doch auch empfangen?
 

musiKk

Top Contributor
readLine() benötigt \n, \r oder \r\n. Du lieferst nichts davon, darum hängen die beiden Methoden.
Fehlendes Flushen ist übrigens auch immer mal noch ein Fehler, wenngleich hier nicht (zumindest nicht bei mir).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Streams und Sockets Java Basics - Anfänger-Themen 3
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Parallel Streams Java Basics - Anfänger-Themen 18
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
M Streams Java Basics - Anfänger-Themen 34
M Streams filter Java Basics - Anfänger-Themen 15
M generate Methode für Streams Java Basics - Anfänger-Themen 6
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
B Collections Streams - Hilfestellung bei komplexer Struktur Java Basics - Anfänger-Themen 9
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
S Streams - kleinstes Element finden Java Basics - Anfänger-Themen 4
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
W Eclipse Autoformatierung für Streams ändern ? Java Basics - Anfänger-Themen 1
S Lambda Ausdrücke Streams Java Basics - Anfänger-Themen 6
I Streams Java Basics - Anfänger-Themen 12
N Frage zu Streams Java Basics - Anfänger-Themen 3
U Input/Output Unterschiede Streams Java Basics - Anfänger-Themen 2
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
C Methoden Sortieren mit Streams: Auf- und absteigend Java Basics - Anfänger-Themen 2
O Streams und die flush Methode Java Basics - Anfänger-Themen 3
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
M Input/Output Streams Java Basics - Anfänger-Themen 5
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
J Java 8 Streams - Frage zu "reduce" Java Basics - Anfänger-Themen 6
Sogomn Input/Output Reader, Writer und Streams Java Basics - Anfänger-Themen 6
T Fehler mit Streams! Java Basics - Anfänger-Themen 2
T Input/Output Object Streams Java Basics - Anfänger-Themen 6
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
I Java Streams Java Basics - Anfänger-Themen 6
R Streams for runaways Java Basics - Anfänger-Themen 5
RySa Input/Output Datei kann nicht gelöscht werden, obwohl Streams geschlossen sind. Java Basics - Anfänger-Themen 2
D Input/Output streams und readLine() Java Basics - Anfänger-Themen 3
firefexx Input/Output close() bei mehreren Streams Java Basics - Anfänger-Themen 5
M Frage zu Streams Java Basics - Anfänger-Themen 9
C try finally - Streams schließen Java Basics - Anfänger-Themen 7
M file löschen, streams evtl noch offen Java Basics - Anfänger-Themen 7
G Character-orientierte File-Streams mit der Klasse FileReader Java Basics - Anfänger-Themen 5
S Piped Streams / Threads Java Basics - Anfänger-Themen 6
H Frage zu Byte-Streams Java Basics - Anfänger-Themen 2
V Performance Lesen und Schreiben aus/in Streams Java Basics - Anfänger-Themen 4
C RandomAccessFile vs. Streams Java Basics - Anfänger-Themen 5
M Probleme mit den Streams Java Basics - Anfänger-Themen 2
G streams schließen Java Basics - Anfänger-Themen 2
P Fragen zu STreams Java Basics - Anfänger-Themen 5
M Streams Java Basics - Anfänger-Themen 4
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
? Streams Java Basics - Anfänger-Themen 2
R RandomAccessFile mit anderen Streams verbinden Java Basics - Anfänger-Themen 5
G Rekursionsaufgabe mit Streams Java Basics - Anfänger-Themen 5
J Problem mit Streams Java Basics - Anfänger-Themen 15
L Streams und Reader/Writer Java Basics - Anfänger-Themen 8
K Frage zu SdtOut streams bzw. Socket Programmierung Java Basics - Anfänger-Themen 3
M Streams, read and write Java Basics - Anfänger-Themen 2
M Streams Java Basics - Anfänger-Themen 2
B Streams wollen scheinbar nicht schließen Java Basics - Anfänger-Themen 6
S Umwandlung eines Character-Streams in ein Image Java Basics - Anfänger-Themen 17
E Probleme mit Streams Java Basics - Anfänger-Themen 3
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
B Input/Output Dateien >65536B über Sockets übertragen Java Basics - Anfänger-Themen 12
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
M Sockets und Threads Java Basics - Anfänger-Themen 2
A XML über Sockets Java Basics - Anfänger-Themen 5
A PrintWriter und Scanner bei Sockets Java Basics - Anfänger-Themen 2
P Programme für Sockets Java Basics - Anfänger-Themen 2
B Client - Server Verbindung über sockets mysql DB ansprechen? Java Basics - Anfänger-Themen 6
M Problem mit Sockets Java Basics - Anfänger-Themen 2
S Allgemeine Frage zu Sockets Java Basics - Anfänger-Themen 23
T Fernsteuerung mittels Sockets (Architektur okay?) Java Basics - Anfänger-Themen 4
S Sockets und Synchronisation Java Basics - Anfänger-Themen 7
S Sockets and InputStream Java Basics - Anfänger-Themen 2
M Sockets. Bekomm keine Antwort vom Server. Java Basics - Anfänger-Themen 7
D Multithread Sockets"Address already in use"Error Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben