Problem mit readLine ---- und mit dem connecten

Status
Nicht offen für weitere Antworten.

PrinzMartin

Aktives Mitglied
Moin Moin

ich versuche seit längerem schon auf Sockets basierend einen Chat zu programmieren nicht für irgend wen oder irgend was sinnvolles sonder einfach nur um mir zu beweisen, dass ich es kann :wink:

Naja ich versuche es halt immer wieder wenn wir in Info was neues gemacht haben von dem ich denke, dass das der Schlüssel zur Lösung ist und jedesmal werde ich wieder enttäuscht ;-)

Naja jetzt haben wir die GUI tiefer besprochen und ich denke da sind meine Probleme jetzt gelöst... ich arbeite mit folgendem Beispiel um das grundlegende von Sockets zu verstehen


Client.java:


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

class Client {
   public static void main(String args[]) {
      try {
         Socket skt = new Socket("localhost", 1234);
         BufferedReader in = new BufferedReader(new
         InputStreamReader(skt.getInputStream()));
         System.out.print("Received string: '");

         while (!in.ready()) {}
         System.out.println(in.readLine()); // Read one line and output it

         System.out.print("\n");
         in.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }
}


Server.java:

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

class Server {
   public static void main(String args[]) {
      String data = "Ich bin ein String";
      try {
         ServerSocket server = new ServerSocket(1234);
         Socket socket = server.accept();
         System.out.print("Server has connected!\n");
         PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
         System.out.print("Sending string: '" + data +"'\n");
         out.print(data);
         out.close();
         socket.close();
         server.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }
}


Leider "verschluckt" das Internet etwas und zwar das >'< vor dem zeilenumbruch am ende auch wenn ich es per +"'"+"\n" mache kommt es nicht an obwohl da steht, dass es mitgesendet wurde.....


Da hatte ich schon mal ein Problem und hab mich dann erst mal mit der GUI beschäftigt aber jetzt bin ich wieder da angekommen und weiß nicht weiter weil ich mich wirklich noch nicht so mit den Sockets auskenne.....

ich hoffe ihr könnt helfen

grazie in anticipo
 
S

SlaterB

Gast
was genau kommt denn an?, verwende ein Beispielwort 'Hello',
sende viele ' hintereinander: ''''''''''''''''''''''''''''''''''

zähle die gesendeten und empfangenen Chars,
verwende direkt einen Stream und lies die Anzahl der Bytes
usw (das waren jetzt viele Vorschläge für viele Versuche)
 

PrinzMartin

Aktives Mitglied
Ok danke sehr es lag an meiner totalen verwirrtheit was sockets angeht ich hab die falsche Codestelle betrachtet.

Die die ich mir angeschaut hab war gar nicht für das Senden verantwortlich :oops:


Da stand ich irgend wie total aufm Schlauch^^

danke sehr jetzt hoffe ich mal, dass ich weiterkomme
 

PrinzMartin

Aktives Mitglied
Sooooooo ich habe wieder einen Fehler für euch ;-)

Code:
Starte C:\Dokumente und Einstellungen\Martin\Desktop\Server\Server_GUI.java

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at cInteraktion.btn_connectActionPerformed(cInteraktion.java:36)
 at Server_GUI$2.actionPerformed(Server_GUI.java:58)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
 at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
 at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
 at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
 at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
 at java.awt.Component.processMouseEvent(Component.java:5488)
 at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
 at java.awt.Component.processEvent(Component.java:5253)
 at java.awt.Container.processEvent(Container.java:1966)
 at java.awt.Component.dispatchEventImpl(Component.java:3955)
 at java.awt.Container.dispatchEventImpl(Container.java:2024)
 at java.awt.Component.dispatchEvent(Component.java:3803)
 at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
 at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
 at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
 at java.awt.Container.dispatchEventImpl(Container.java:2010)
 at java.awt.Window.dispatchEventImpl(Window.java:1778)
 at java.awt.Component.dispatchEvent(Component.java:3803)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
 at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


So das ist der Fehler aber erst mal wie es dazu kommt.

ich gehe einfach mal ganz genau den weg den das Programm geht, soweit ich das nochvollziehen kann...

es startet in der GUI sobald ich auf den Button "connect" klicke

Code:
btn_disconnect.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        btn_disconnect.btn_disconnectActionPerformed(evt);
      }

Das verweist ja auf ein Objekt, welches Typ meiner Klasse für die Button Actions ist, sie heißt "cInteraktion" und extends JButton...
darin steht dann die Action:

Code:
public void btn_connectActionPerformed(ActionEvent evt)
  {
    server.connect();
    
    if(server.getConnected() == true)
    {
      status.setBackground(Color.GREEN);
    }
    else
    {
      status.setBackground(Color.RED);
    }

  }

Das verweißt ja auf das Objekt "server" der Klasse cServer in der folgende "connect()" Methode steht:

Code:
public void connect()
  {
     try {
          server = new ServerSocket(1234);
          socket = server.accept();
          out = new PrintWriter(socket.getOutputStream(), true);
          in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          connected = true;
        }
      catch(IOException e) {
         connected = false;
      }
  }



So das war es auch shcon, ich hoffe das ist nicht zu viel für euch mich wundert nur, dass die Klassen an sich alle laufen nur wenn ich aus der GUI heraus die "connect()" Methode aufrufe bekomme ich einen Fehler... bei einem Testprogramm ohne GUI bekomme ich den Fehler nicht.....


ich hoffe ihr könnt helfen

grazie in anticipo
 
S

SlaterB

Gast
in
server.connect();
ist offensichtlich server null, einfach nachzuprüfen mit
System.out.println("server ist: "+server);
eine Zeile zuvor

wo server angelegt wird schreibst du nicht, da kann man also nichts zur Ursache sagen
 

PrinzMartin

Aktives Mitglied
Moin Moin

Sicher ist server "null"

und das wird aber in connect auch genau so gewollt denn direkt in der ersten anweisung im try block wird server gesetzt....

ich habe jetzt ein programm genommen das keine gui hat und habe einfach in der main ein objekt des servers erstellt welches dann die connect methode aufruft....

auch da ist server = null wird auch angezeigt wenn ich es ausgeben lasse.... dann läuft aber alles wunderbar durch undnach dem connecten ist server = naja es ist halt was ich hab mir nicht aufgeschrieben was da stand aber es läuft...


ich check aber noch mal ob ich vllt irgend wo was vergessen habe aber das server vor dem connecten = null ist ist doch eigentlich nicht falsch oder?
 
S

SlaterB

Gast
..

mit server.connect(); ist doch offensichtlich den Aufruf der connect.Operation,
nicht irgendwas in connect() drin,
die Operation wird gar nicht erst aufgerufen, da das Objekt server in btn_connectActionPerformed() null ist
oder irgendwas anderes dort ist null,

die Fehlermeldung sagt dir die genaue Zeile und dort können ja nicht mehr als 1-2 Objekte berührt werden,
ist also ein Kinderspiel, so einen Fehler zu finden..
 

PrinzMartin

Aktives Mitglied
also ich habe es jetzt anders gelöst daher ist das eigentlich nicht mehr so wichtig aber verstehen tue ich es immer noch nicht denn naja ich weiß schon was du meinst und ich würde es ja auch so sagen, aber irgendwie liegt mir die lösung trotzdem verborgen...

wenn ich

server.connect() aufrufe, dann kommt ja der fehler....

ich bin mir aber ganz sicher ein objekt der server klasse gemacht zu haben und naja das ist vllt kein kriterium aber wenn ich server. schreibe, dann wird auch sinnvoll mit connect() ergänzt........

also sogar der Java Editor kennt die Funktion^^

jetzt beschäftige ich mich gerade mit dem PrintWriter, da ich den nicht immer schließen möchte, damit die line als abgeschlossen gilt...

ich denke zumindest daran liegt das. ich hab readLine um mit dem Client zu empfangen und der gibt das erst aus, wenn der PrintWriter "geclosed" ist........

aber da google ich erst mal da bin ich nur gerade drauf gestoßen vllt schaff ich das ja mal so


aber danke, dass ihr euch damit beschäftigt habt.. :toll:
 
S

SlaterB

Gast
> also sogar der Java Editor kennt die Funktion^^

wäre die Operation nicht definiert, dann gäbe es einen Compilerfehler,

du hast eine NullPointerException zur Laufzeit, der Zugriff ist im Grunde ok, aber das Objekt ist schlicht null,
dass du dir mit der Erstellung des Objektes sicher bist hat auf das Nichtvorhandensein keinen Einfluss,

warum du nicht einfach
System.out.println("server ist: "+server);
davor schreibst und jede Diskussion beendest, verstehe ich nicht..
 

PrinzMartin

Aktives Mitglied
hab ich ja gemacht da kommt ja auch "null" raus also er gibt es ja aus aber ich weiß halt nicht warum.......

aber da an der Lösung eh was nicht durchdacht war und es in der neuen klappt is es ja nicht so wichtig warum vllt ein dummer fehler an einer ganz anderen stelle....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
0din SMTP Client - readline problem Netzwerkprogrammierung 4
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
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
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
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
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
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
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
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
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
M Problem beim Datenempfang Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
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
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
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
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
R RMI Hibernate Problem Netzwerkprogrammierung 4
Z RMI Problem Netzwerkprogrammierung 11
F RMI problem mit RMI Netzwerkprogrammierung 3
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
H Log4j SocketAppender Problem Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
P Problem mit JOscarLib Netzwerkprogrammierung 6
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
W vista / win server 2003 netzlaufwerk problem Netzwerkprogrammierung 4
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
E Problem: netbeans 6.5 und webanwendung Netzwerkprogrammierung 6
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10

Ähnliche Java Themen

Neue Themen


Oben