Sockets

Status
Nicht offen für weitere Antworten.
A

Antibus

Gast
hallo,
ich wollte ma wieder seit langem nen bischen java proggen. Hier ma der Code

Clien.java
Code:
package myfristSocketpckg;

import java.io.BufferedReader;
//import java.io.DataInputStream;
//import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Socket client = null;
		//DataInputStream in = null;
		BufferedReader inputline = null; 
		PrintWriter out = null;
		Scanner scanner = new Scanner(System.in); // java.util.Scanner
		boolean ok = true;
		String line;
		Server server = new Server();
		server.start();
		
		System.out.println("... Client started");
		
		try {
			client = new Socket("localhost",130);
			//in = new DataInputStream(client.getInputStream());
			inputline = new BufferedReader(new InputStreamReader(client.getInputStream()));
			//out = new DataOutputStream(client.getOutputStream());
			out = new PrintWriter(client.getOutputStream(), true);
		} catch (Exception e) {
			System.out.println("Connection faild");
			System.out.println(e);
			ok = false;
		}
	
		while (ok){
			System.out.print("Client : ");
			line = scanner.nextLine();
			if (line.equals("exit") | line.equals("Exit")) ok = false;
			try {
				out.write(line);
				System.out.println(inputline.readLine());
			} catch (Exception e) {
				System.out.print(e);
				ok = false;
			}
		}

		try {
			client.close();
			server.start();
			inputline.close();
			out.close();
		} catch (Exception e) {
			System.out.print(e);
		}
	}
}

Server.java
Code:
package myfristSocketpckg;

import java.io.BufferedReader;
//import java.io.DataInputStream;
//import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server extends Thread{

	/**
	 * @param args
	 */
	public void run() {
		ServerSocket server = null;
		Socket client = null;
		//DataInputStream in = null;
		BufferedReader inputline = null;
		PrintWriter out = null;
		boolean ok = true;
		String line;
		
		System.out.println("... Server started");
		
		try {
			server = new ServerSocket(130);
			client = server.accept();
			//in = new DataInputStream(client.getInputStream());
			inputline = new BufferedReader(new InputStreamReader(client.getInputStream()));
			//out = new DataOutputStream(client.getOutputStream());
			out = new PrintWriter(client.getOutputStream(), true);
			out.flush();
		} catch (Exception e) {
			System.out.print("Acception faild");
			System.out.println(e);
			ok = false;
		}
	
		while (ok){
			try {
				line = "Server : " + inputline.readLine();
				out.write(line);
			} catch (Exception e) {
				System.out.print(e);
				ok = false;
			}
		}
		
		try {
			client.close();
			server.close();
			inputline.close();
			out.close();
		} catch (Exception e) {
			System.out.println(e);
		}
	}

}

Im Grunde ist es ziemlich simpel. Der Client startet den Server und wartet dann auf eine Eingabe. Diese Eingabe schickt der dann zum Server. Der Server schickt dann diesen Text zurück und der Client gibt es dann wieder aus.
So sollte es theoretisch funktionieren. Aber leider funktioniert es nicht ganz. Der Server bekommt die Nachricht gar nicht.
Könnt ihr mir sagen, wo mein Fehler ist??

mfg Antibus
 
S

SlaterB

Gast
> und der Client gibt es dann wieder aus

wo genau findet das statt?

du scheinst den Client direkt nach dem Absenden der ersten Nachricht an den Server zu schließen,
dass beendet dann auch die Connection, lass dem Server doch ein paar Millisekunden, um die Nachricht zu erhalten ;)

schau dir mal die Beispiele hier an:
http://www.galileocomputing.de/openbook/javainsel6/javainsel_16_008.htm
16.8 Client/Server-Kommunikation
 
A

Antibus

Gast
SlaterB hat gesagt.:
> und der Client gibt es dann wieder aus

wo genau findet das statt?

du scheinst den Client direkt nach dem Absenden der ersten Nachricht an den Server zu schließen,
dass beendet dann auch die Connection, lass dem Server doch ein paar Millisekunden, um die Nachricht zu erhalten ;)....

hier :

Client.java
Code:
...
      while (ok){
         System.out.print("Client : ");
         line = scanner.nextLine();
         if (line.equals("exit") | line.equals("Exit")) ok = false;
         try {
            out.write(line);
            System.out.println(inputline.readLine());
         } catch (Exception e) {
            System.out.print(e);
            ok = false;
         }
      } 
...

Server.java

Code:
...
      while (ok){
         try {
            line = "Server : " + inputline.readLine();
            out.write(line);
         } catch (Exception e) {
            System.out.print(e);
            ok = false;
         }
      } 
...

Wenn man nicht gleich Exit oder exit eingibt, dann wird weder Client noch der Sever beendet sondern befinden sich dann in einer endlos Schleife. ;)
Danke für den Link.. werd ich mir ma anschaun.

mfg Antibus
 
S

SlaterB

Gast
jaja, ich seh schon dass ich mal wieder viel zu schnell geantwortet habe ;) ,
dafür schaue ich es mir mal genauer an, schon seltsam
 
S

SlaterB

Gast
zwei Fehler (hab viel ausgetauscht, weiß nicht was alles wofür verantwortlicht ist):

1.
BufferedReader.readLine() wartet brav, bis endlich eine ganze Zeile mit Zeileumbruch \n am Ende gelesen wird,
lies lieber in ein byte[]/ char[] oder achte auf \n bei jeder Nachricht


2.
autoFlush hilft nicht für write:
* @param autoFlush A boolean; if true, the <tt>println</tt>,
* <tt>printf</tt>, or <tt>format</tt> methods will
* flush the output buffer
out.flush();
nach jeder Nachricht tut aber auch nicht weh

oder println verwenden, das löst anscheinend beide Probleme gleichzeitig?
 
S

SlaterB

Gast
wenn du von der Konsole alle Zeichen einlesen würdest, ja,
aber Scanner schneidet das \n ab
(mit System.out.println(line) zu testen)

genau wie der BufferedReader das beim Empfäger auch wieder abschneiden würde, Ruhm und \n sind vergänglich..
 

Antibus

Mitglied
Scanner schneidet das \n ab!?!?! Frechheit!! :D
... ok, daran wirds wohl liegen^^
Heißen Danke.. werd ich gleich ma probieren.
 
S

SlaterB

Gast
und am Flush, also gleich println, das fügt automatisch ein \n an!

und bitte noch mal ein Lob für meinen Spruch 'Ruhm und \n sind vergänglich..' ;)
 

Antibus

Mitglied
Großes Lob^^
Ok, werd ich ma probieren. Danke..
Theoretisch müsste ich das ja alles noch können. Hab ich ja alles in meinem Studium gerlent... theoretisch.^^
 

Antibus

Mitglied
ok, danke jetzt funktionierts...
ich musste beides machen..
1. das "\n" ran hängen
2. nach jedem senden flush auf rufen..

dann hats geklappt. ;)
also nochmal vielen dank.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
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
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
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
K "Ende eines Sockets" Netzwerkprogrammierung 9
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
G immer wieder gleiche Sockets Netzwerkprogrammierung 2
V Suche Alternative zu Sockets Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
AlClemento Sockets -> BufferedReader Problem Netzwerkprogrammierung 2
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
B Übertragung via Sockets Netzwerkprogrammierung 12
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
T Sockets Verständnisfrage: abwechelnd lesen-schreiben Netzwerkprogrammierung 4
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Strings über Sockets senden Netzwerkprogrammierung 5
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
Y buch: Netwerprogrammierung und Sockets Netzwerkprogrammierung 2
B Eigenes Protokoll über Sockets verschicken Netzwerkprogrammierung 4
P Welche Art von Sockets für ein Spiel? Netzwerkprogrammierung 3
C Sockets über Internet Netzwerkprogrammierung 10
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
D Java Sockets Probs Netzwerkprogrammierung 4
N Verarbeitung nach Weiterleitung in Sockets Netzwerkprogrammierung 2
A Serialisierung über Sockets möglich? Netzwerkprogrammierung 3
M sockets (security) Netzwerkprogrammierung 2
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben