2016-12-24 6 views
-1

Ich arbeite an Projekt arbeitet auf SMPP-Protokoll. Unendlich hört es auf Server zu und nimmt Sockel an. Nach dem Empfang von Socket wird ein Handler erstellt, der Daten empfängt und nach dem SMPP-Protokoll verarbeitet. Nach einem gewissen Punkt (1 oder 2 Wochen) hört es auf, Socket zu empfangen. Es gibt keine Ausnahme, sondern wartet nur online *. Ich weiß nicht, was das Problem ist und wie ich es beheben kann. Beachten Sie, dass die Anzahl der Sockets nicht mehr als 30 ist. Wir haben also kein Problem mit dem Grenzwert für die Anzahl der aktiven Sockets. Und beachten Sie, dass die anderen zuvor erstellten Sockets am Leben sind und arbeiten. App empfängt Daten von diesen Sockets und verarbeitet: Empfangen Sie sms-es und senden Sie sms-es aus diesen Sockets. Nach dem Neustart der App funktioniert es. Ich denke, es ist nicht die Lösung.Empfangen Socket stoppt plötzlich nach irgendwann

private void process() { 
    try { 
     //line *.waiting for receiving new socket. Problem is on this point 
     Socket socket = serverSocket.accept(); 
     //creating a handler that recieve data and process it according to SMPP protocol 
     StandardConnectionHandler sch = new StandardConnectionHandler(socket); 
     new Thread(sch).start(); 
     smsc.getConnectionHandlers().add(sch); 
    } catch (Exception ex) { 
     logger.log(Level.SEVERE, "exception in accepting a connection", ex); 
    } finally { 
     process();//if it is done.recieved a new socket call back again 
     //it is infinite recursive procedure 
    } 
} 
+0

gut, 1-2 Wochen denke ich sein normales Verhalten. Was ist mit einem "Wachhund", Service, der die Steckdose beim Schließen wieder starten soll? –

+0

Socket schließt nicht, es funktioniert.Ich habe festgestellt, dass alle zuvor erstellten Sockets am Leben sind und funktionieren. Wenn der Socket geschlossen wurde, müssen alle Clients, die mit der App verbunden sind, ebenfalls geschlossen werden. Das Problem besteht darin, einen neuen Socket zu empfangen für it.no keine Ausnahme kein Fehler – Sarkhan

+0

@MaximShoustin Ich schrieb in meinem letzten Kommentar.Bitte lesen Sie es.Es gibt keine herunterfahren, schließen Problem – Sarkhan

Antwort

-1

Sie haben Ihren vollständigen Code und die Initialisierung des Server Sockets nicht veröffentlicht. Nichtsdestotrotz denke ich, dass dein Problem damit zusammenhängen könnte, dass du nicht alle Streams richtig schließt.

+0

Ich debugge alle Sockets ständig und jeder Client hat privilidge, um einmal zu verbinden.Ich merke wieder, es gibt keinen Fehler.In der Situation sagten Sie, ich sollte einen Fehler erhalten – Sarkhan

+0

Gibt es einen Grund für den rekursiven Anruf oder können Sie auf einen Standard während wechseln Zyklus – user2430343

+0

Ich kann es in while (true) too.There gibt keinen besonderen Grund für rekursive Prozedur.Was könnte das Problem in der rekursiven Version sein? – Sarkhan

Verwandte Themen