Frage : wie man den gleichen Hafen außen repeatly benutzt

ich erhielt das error

INFO: Ausnahme in PortListener
SEVERE: null
java.net.BindException: Adresse bereits gebräuchliches
java.net .PlainSocketImpl.socketBind (Native Methode) am
bei java.net .PlainSocketImpl.bind (PlainSocketImpl.java: 359)
bei java.net .ServerSocket.bind (ServerSocket.java: 319)
bei java.net .ServerSocket.t> (ServerSocket.java: 185)
bei java.net .ServerSocket.t> (ServerSocket.java: 97)
an tcplistener.PortListener$ToDoTask.run (PortListener.java: 67)
an java.util.TimerThread.mainLoop (Timer.java: 512)
an java.util.TimerThread.run (Timer.java: 462)


how, zum des problem
zu lösen
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:
6:
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:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
public Kategorie PortListener verlängert HttpServlet {
   private Einfaßungssocke;
   privates ServerSocket serverSocket;
   
   privater Timer-Timer;
   privater int a = 0;
   
Öffentlichkeit leeres init () wirft ServletException

{
    Versuch {
            Timer = neuer Timer ();
            timer.schedule (neues ToDoTask (), 5000);
            
           
    } Fang (Ausnahme ex)
    {
       Logger.getLogger (PortListener.class.getName ()).log (Level.SEVERE, Null, ex);
    }
}

Kategorie ToDoTask verlängert TimerTask
 {
   Öffentlichkeitslücke laufen gelassen ()
    {
       Versuch
        {
                timer.cancel ();
                InputStream ist = getServletContext () .getResourceAsStream („/WEB-INF/navl.properties“);
                Eigenschaften p = neue Eigenschaften ();
                p.load (ist);
                is.close ();
                Schnur Pro = p.getProperty („dataPort“);
                int-Hafen = Integer.parseInt (Pro);
                serverSocket = neues ServerSocket (Hafen);
        
        während (zutreffend)
        {
           
            
            System.out.println („, hörend auf ......“ +, Hafen);
            Socke = serverSocket.accept ();
            Gewinde t = neues Gewinde (neues ModuleHandler (Socke));
            t.start ();
                    
           
            //startthread (Socke);
        }


		
        } Fang (Ausnahme ex) 
        {
                System.out.println („Ausnahme in PortListener“);
                Logger.getLogger (PortListener.class.getName ()).log (Level.SEVERE, Null, ex);
               
        }
        


    }


  }

    geschütztes leeres processRequest (HttpServletRequest Antrag, HttpServletResponse Antwort)
    Würfe ServletException, IOException {
}      
       
    geschütztes leeres doPost (HttpServletRequest Antrag, HttpServletResponse Antwort)
    Würfe ServletException, IOException {
        processRequest (Antrag, Antwort);
    }

    allgemeines Schnur getServletInfo () {
        „kurze Beschreibung“ zurückbringen;
    }/

}

Antwort : wie man den gleichen Hafen außen repeatly benutzt

In diesem Fall verursacht das 1. Timer-Gewinde das ServerSocket und es konnte nicht der gesammelte Abfall sein als der 2. Timer-Gewindedurchlauf; das ist, warum Sie die Bindungsausnahme erhalten.

Sie können auf, welchem Hafen erhalten die Einfaßung hört, indem sie die getLocalPort () Methode anwendet.

Weitere Lösungen  
 
programming4us programming4us