[java] connection refused ???

Pagina: 1
Acties:

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Ik ben een Client/Server applicatie aan het schrijven en gebruik hiervoor een Socket met ObjectOutputStream en ObjectInputStream. De server is ook in java en draait op poort 1777. (onder windows xp). Maar als ik de server aanzet en de client laat verbinden met localhost:1777 zegt ie: connection refused. Wie weet waarom dit niet werkt ??
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try {
            JRDQuery myQuery = new JRDQuery(sql);
            myQuery.setAuthorization("geheim");
            URL serverurl = new URL("localhost:1777");
            Socket server = new Socket(serverurl);
            ObjectOutputStream out = new ObjectOutputStream(server.getOutputStream());
            out.writeObject(myQuery);
            ObjectInputStream in = new ObjectInputStream(server.getInputStream());
            JRDResult results = (JRDResult) in.readObject();
            JRDResultSet resultset = (JRDResultSet)results.getResult();
        }
        catch(Exception e) {
            e.printStackTrace();
        }

Ik heb op de javasoft pagina in de tutorial iets gelezen over policies, maar als ik zo'n bestand maak en gebruik met mijn java progs dan werkt het nog niet :'(

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Weet je 100% zeker dat de server ook echt werkt? Kijk de output van 'netstat -a' eens na en controleer of poort 1777 ook echt aan het listenen is.

Voor een eenvoudige client-server app die ik eens voor school moest maken had ik helemaal geen policies nodig, ook niet naar andere pc's. Dus je probleem zal waarschijnlijk elders liggen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Ik dacht zelf dat het aan XP lag, een oude app in java deed het in een keer ook niet meer.. maar ik zal het eens met netstat proberen.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Netstat ziet idd geen poort 1777 openstaan. Ik plak hieronder ff de servercode :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.sql.*;
import java.io.*;
import java.net.*;

/** this class will listen for incoming connections and will return the results of the sent JRDQuery object **/

public class JRDServer implements Runnable {
    int serverPort;
    Socket commSocket;
    ServerSocket serverSocket;
    Thread serverThread;
    boolean debug = true;
    boolean alive = true;
    ObjectInputStream inStream;
    ObjectOutputStream outStream;
    JRDTask serverTask;
    String auth = "geheim";
    
    public boolean checkAuth(String a) {
        if(new MD5(auth).toString()==a) {
            return true;
        }
        else {
            return false;
        }
    }
    
    public JRDServer(int port) {
            serverPort=port;
        serverThread = new Thread(this);
        serverThread.start();
    }
    
    public JRDServer() {
        this(1777);
    }
    
    public void printInfo(String i) {
        System.out.println("   Info: "+i);
    }
    
    public void printError(Exception e,String arg) {
        System.out.println("An error occured while "+arg+":");
        e.printStackTrace();
    }
    
    public void run() {
        try {
            serverSocket = new ServerSocket(serverPort);
            printInfo("Server is running");
            while(alive) {
                commSocket = serverSocket.accept();
                printInfo("Client Connected");
                inStream = new ObjectInputStream(commSocket.getInputStream());
                serverTask = (JRDTask)inStream.readObject();
                outStream = new ObjectOutputStream(commSocket.getOutputStream());
                if(checkAuth(serverTask.getAuthorization())) {
                    outStream.writeObject(serverTask.execute());
                }
                else {
                    printError(new Exception(serverTask.getAuthorization()),"authenticating client : wrong authorization");
                }
            }
        }
        catch(Exception e) {
            printError(e,"serving clients");
        }
    }
}

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Ik zie niets verkeerds aan die code, weet je zeker dat je .accept() wel aangeroepen wordt? Zet er eens een breakpoint op als je die mogelijkheid hebt, zo niet, plaats dan wat System.out.println("blaat"); achtige dingen tussen.

Hier de code die ik gebruikte, die werkte prima:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
      public void run() {
        Socket conn = null;
        
        while (quitflag==false) {
            try {
              // Listen on the socket
              if (quitflag==false) {
                conn = socket.accept();
                System.out.println("SmartLockListener.Listenthread: Connection accepted"); 
              }
        
              if (conn!=null && quitflag==false) {
                ObjectOutputStream out = new ObjectOutputStream(conn.getOutputStream());
                System.out.println("SmartLockListener.Listenthread: Created ObjectOutputStream");
                ObjectInputStream in = new ObjectInputStream(conn.getInputStream());
                System.out.println("SmartLockListener.Listenthread: Created ObjectInputStream");
                while (conn!=null && quitflag==false) {
                    java.lang.Long[] list = (java.lang.Long[])in.readObject();
                    System.out.println("SmartLockListener.Listenthread: Access requested for lock" + list[0].longValue() + " with key" +list[1].longValue());
                    boolean magLockOpen = cmd.openLock(list[0].longValue(),list[1].longValue());
                    Boolean magopen = new Boolean(magLockOpen);
                    System.out.println("SmartLockListener.ListenThread: Access " + magopen);
                    out.writeObject(magopen);
                }
              }
            }
            catch (Exception e) {
              System.out.println("Exception in ListenThread:" + e.toString()+ "\nResuming listening at port " + LISTEN_PORT + "...");
            }
        }
        
        System.out.println("Stopping, quitflag=" + quitflag);
      }

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
MrData...

Kijk is goed naar je code....

Wat is de port van je server? In ieder geval geen 1777, volgens mij probeer je op dit moment een serverSocket aan te maken op port 0. De standaard waarde van een niet nader geinitialiseerde int member variabele.

Ik zie je dus nergens de waarde 1777 toekennen aan de int serverPort


Beetje domme fout als je het mij vraagt. :+

Je mag nu jezelf even afzonderen en jezelf voor je kop gaan slaan omdat je het zelf niet zag.

En Gerco... Foei!! Zeggen dat de code klopt.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zondag 04 november 2001 21:19 schreef The - DDD het volgende:
En Gerco... Foei!! Zeggen dat de code klopt.
Ik zei niet dat het klopte, ik zei dat ik er niets aan zag. Dat betekent alleen dat ik niet goed genoeg gekeken heb :)

En trouwens, hij zet WEL 1777 in de code... :
code:
1
2
3
    public JRDServer() {
        this(1777);
    }

Hij doet er alleen verder niks mee.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zondag 04 november 2001 22:03 schreef Gerco het volgende:

[..]

Ik zei niet dat het klopte, ik zei dat ik er niets aan zag. Dat betekent alleen dat ik niet goed genoeg gekeken heb :)

En trouwens, hij zet WEL 1777 in de code... :
code:
1
2
3
    public JRDServer() {
        this(1777);
    }

Hij doet er alleen verder niks mee.
Ok, je bent vergeven ;)

Enne ik zeg toch :+ : "Ik zie hem nergens 1777 toekennen als port van de server." Er staat wel ergens 1777, maar ja, als je er weinig mee doet. Tja...

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Jah sorry :) niet gezien ik zal hem nu maar weer eens hercompileren en dan kan ik weer verder proggen :)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Op zondag 04 november 2001 20:56 schreef Gerco het volgende:
Ik zie niets verkeerds aan die code, weet je zeker dat je .accept() wel aangeroepen wordt?
Dat is het nou juist !! Die server zie ik niet met netstat -n 5. Normaal moet een server daar toch bij staan ???

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op maandag 05 november 2001 07:25 schreef MisterData het volgende:
Dat is het nou juist !! Die server zie ik niet met netstat -n 5. Normaal moet een server daar toch bij staan ???
Als je de thread gelezen had, dan zag je dat je je poort nooit aan de ServerSocket meegeeft, dus listent hij op een willekeurige, vrije poort, NIET op 1777.

Maak van:
code:
1
2
3
4
public JRDServer(int port) {
     serverThread = new Thread(this);
     serverThread.start();
}

eens:
code:
1
2
3
4
5
public JRDServer(int port) {
     serverPort=port;
     serverThread = new Thread(this);
     serverThread.start();
}

Dat werkt waarschijnlijk een stukje beter.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op maandag 05 november 2001 07:18 schreef MisterData het volgende:
Jah sorry :) niet gezien ik zal hem nu maar weer eens hercompileren en dan kan ik weer verder proggen :)
Op maandag 05 november 2001 07:25 schreef MisterData het volgende:

[..]

Dat is het nou juist !! Die server zie ik niet met netstat -n 5. Normaal moet een server daar toch bij staan ???
:?

Eerst zegt ie dat ie het niet gezien had en vervolgens zegt ie dat ie hem niet kan zien bij netstat -n.

HALLO!! Port openen op poort 0? Duh!!!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
HALLO !!!!!
Communicatiestoornis??? iig :

Dat heb ik allang veranderd in mijn code maar niet in dit topic (dadelijk wel) dus dat is het probleem _NIET_ !!!

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op maandag 05 november 2001 16:58 schreef MisterData het volgende:
HALLO !!!!!
Communicatiestoornis??? iig :

Dat heb ik allang veranderd in mijn code maar niet in dit topic (dadelijk wel) dus dat is het probleem _NIET_ !!!
Euh, dat was in de allereerste code die je gepost had dus wel het probleem.

Een member variabele integer wordt standaard met 0 geïnitialiseerd (net zoals een member verwijzing naar een object standaard naar null wijst). Alleen als je er een andere waarde aantoekent bij de declaratie van het geval is dit niet het geval.

Het probleem in jou code was echt wel dat je een server socket wou openen op poort 0, wat dus niet mogelijk is.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Herbruikbare userinterface onderdelen schrijven is ook wel een uitdaging ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Ja jongens , ik heb al jullie tips opgevolgd maar hij doet het nog steeds niet :(

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op dinsdag 06 november 2001 18:50 schreef MisterData het volgende:
Ja jongens , ik heb al jullie tips opgevolgd maar hij doet het nog steeds niet :(
Vertel is wat er niet werkt.

Kan ik opmaken uit je voorgaande opmerkingen dat je ondanks dat alles aangemaakt en juist geinitialiseerd is, je jou server botweg niet ziet als je netstat doet?

Heb je misshien toevallig packet filtering anstaan in Win2K? (wild gokje)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
Neej ik draai Windows XP :) maar daar zal een dergelijke functie ook wel inzitten. Ik heb net gekeken en die staat bij Mij dus NIET aan. Nog ff een korte beschrijving van het probleem :

-Ik heb een server die draait op poort 1777
-die server zie ik niet via netstat -n 5
-ik zie hem ook niet met netstat -r

Dus hoe zit dit ?? Ik dacht dat Java ook iets met policies deed maar hoe dar zit weet ik niet :( Ik zit nu al 2 dagen emt hetzelfde probleem dus nou wordt eht wel eens tijd om dat op te lossen :) :) :) Java is niet :r maar soms ook wel vaag :+

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Op woensdag 07 november 2001 07:29 schreef MisterData het volgende:
-Ik heb een server die draait op poort 1777
-die server zie ik niet via netstat -n 5
-ik zie hem ook niet met netstat -r
Probeer eens een verbinding te maken met telnet...
telnet 127.0.0.1 1777

Als je geen error krijgt (connection refused of zo), dan draait ie. Als je wel zo'n soort error krijgt, klopt er bij de server iets niet.
Verder geen idee, ik spreek geen java...

Exact expert nodig?


  • MisterData
  • Registratie: September 2001
  • Laatst online: 21:10
thnx :) was dat oude tooltje al vergeten :)
Pagina: 1