# JAV07P SGD client/server chat



## Sinclair (24. Mrz 2004)

Hallo, 

Mir geht es nicht um die Lösung der Einsendeaufgaben, sondern ich bin noch im Heft selbst und habe ein Problem das ich irgendwie nicht lösen kann. 

Mein client verbindet sich mit dem Server und das accept() funktioniert wunderbar, auch die Rückmeldung vom Server. 
Nur komischerweise wenn ich etwas sende erkennt der Server nicht die Nachricht. 
Ich komme auf dem Server zwar in das SocketDataArrival Event, aber bei getSource() und Abfrage ob event.getSource()== socket_1 ist, komme ich nie in die IF Schleife rein. Irgendwie hat event.getSource() einen anderen Wert. 

Mein client senden sourcecode: 

```
private void cb_1_senden_actionPerformed( java.awt.event.ActionEvent event ) 
    { 
        java.lang.String text; 
        java.lang.String result; 
        byte[] buffer; 

        //Text aus Eingabefeld auslesen und senden 
        text = textf_1_eingaben.getText(); 
        buffer = text.getBytes(); 
        if(buffer.length >0){ 
        result = new String(buffer); 
        socket_1.send( buffer);     
        texta_1_meldungen.append("Nachricht gesendet: " + result +"\n"); 
        textf_1_eingaben.setText(""); 
        textf_1_eingaben.requestFocus(); 
        } 
        else{ 
            texta_1_meldungen.append("Sie haben keinen Wert zum versenden eingegeben.\n"); 
            textf_1_eingaben.requestFocus(); 
        } 
         


 }
```

----------------------------------------- 
Serverevent DataArrival: 


```
public void socketDataArrival(powersoft.powerj.event.SocketDataArrivalEvent event) 
    { 
                 
        java.lang.String    remoteHostName; 
        byte[]                message; 
        String                line=""; 
         
        texta_1_meldungen.append("d"+event.getSource()); 
         
        if(event.getSource()== socket_1){ 
            int                result; 
            int                bytesReceived; 
            remoteHostName = socket_1.getRemoteHostName(); 
            texta_1_meldungen.append( "Daten angekommen von " + remoteHostName + "\n" ); 
            bytesReceived = event.getBytesReceived(); 
            byte[] buffer = new byte[bytesReceived]; 
            result = socket_1.receive(buffer); 
            if(result>0){ 
                line = new String(buffer); 
                texta_1_meldungen.append( " " + line + "\n" ); 
                line = srvsocket_1.getLocalHostName() +" meldete: " + line; 
                message = line.getBytes(); 
                socket_1.send(message); 

            } 
             
        } 
     
         
    }
```




Wer hat einen Tipp bzw kann helfen? bzw. hatte das selbe Problem. 

Grüsse


----------



## Roar (24. Mrz 2004)

1. ich hab mal code tags um den code gemacht
2. das java.lang. kannst d udir sparen, da das java.lang package automatisch importiert wird
3. kann es sein dass du dich im forum getäuscht hast? von welchem heft redest du? und was für einsendeaufgaben? und was bitte ist powersoft.powerj.event.SocketDataArrivalEvent ??


----------



## Sinclair (25. Mrz 2004)

Danke fürs zusammenfassen 

Zu Deiner Fragen /Anmerkungen

Ich mache derzeit ein Java Fernstudium bei SGD und dort bin ich bei Heft JAV07. Jedes Heft hat Einsendeaufgaben die man lösen muss. Davon rede ich.
Ich habe es in diesem Forum gepostet, weil es einige gibt/gab die bei SGD ein Java Fernstudium gemacht haben.
Ich hoffe einfach der ein, oder andere kann mir zum Thema helfen.

Das das "java.lang." komt nicht von mir, sondern von der IDE (PowerJ) die setzt das automat.

-> powersoft.powerj.event.SocketDataArrivalEvent stammt von der PowerJ eigenen Socket Klasse bzw, ist ein Event davon.


----------



## Roar (25. Mrz 2004)

achso deshalb.
jaja die IDEs... is wohl ne dämliche IDE.
ich kann dir leider nicht weiterhelfen, da ich ja nicht weiß worums da geht, bzw, was das für klassen sind.


----------



## Sinclair (25. Mrz 2004)

Ich mag die IDE auch nicht. Aber ist leider Bestandteil der Übung. Ich mag eher Eclipse.

Hab den Fehler gefunden und bitte darum den Thread zu schliessen.
Hier mein fehler für diejenigen die evtl. das gleiche Problem hatten:


socket_1 ist eine Zugewiesene Client Instanz welche vom Serversocket Methode accept() zurückgeliefert wird.

Mein Fehler war das ich socket_1 nochmals als Datentyp definiert hatte und es damit zu überschneidung der zugewiesenen Client Instanz kam (weil ich weise ja im SocketConnectionrequest socket_1 schon zu).


----------

