Ich dachte, das Schließen des Servers Socket würde den Server trennen. Fehle ich etwas? Irgendwelche Ideen?Server vom Socket im Chat-Programm trennen
Antwort
versuchen, den Server-Buchse alle Ihre Steckdose schließen ...
public class MyServer {
public static final int PORT = 12345;
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket ss = ServerSocketFactory.getDefault().createServerSocket(PORT);
Socket s = ss.accept();
Thread.sleep(5000);
ss.close();
s.close();
}
}
public class MyClient {
public static void main(String[] args) throws IOException, InterruptedException {
Socket s = SocketFactory.getDefault().createSocket("localhost", MyServer.PORT);
System.out.println(" connected: " + s.isConnected());
Thread.sleep(10000);
System.out.println(" connected: " + s.isConnected());
}
}
Siehe Inhalt here...
Mein Server läuft in einem separaten Thread, der 'ServerThread' Klasse, um ein Einfrieren der GUI zu vermeiden. Ich nehme an, ich rufe ServerThread.sleep() in der Serverklasse auf. Außerdem hat meine Server-Klasse kein Socket-Objekt (das auf der Client-Seite, um Verbindungen zu akzeptieren) – Guest1235
Mein Server auf einem separaten Thread ausgeführt wird, Serverthread-Klasse, die gui ein Einfrieren zu vermeiden. Ich nehme an, ich rufe ServerThread.sleep() in der Serverklasse auf. Auch meine Serverklasse keine Socket-Objekt haben (seine auf der Clientseite akzeptieren Verbindungen)
Soweit ich Sie verstehen, Sie haben die Serversocket-Objekt in der Client-Klasse deklariert und rufen Sie die Serversocket: accept() Methode von dort. Diese Methode soll Unterbrechungen wie dem Schließen des zugrundeliegenden ServerSockets oder dem Aufrufen von Interrupt() auf dem Thread, das den Socket enthält, "überleben".
Die einzige Möglichkeit, den ServerSocket zu beenden: Die Methode accept() ist eine SocketTimeOutException, wie in here erwähnt.
So, hier ist ein Beispiel:
ServerSocket server = new ServerSocket(PORT);
server.setSoTimeOut(MILLISECONDS_TO_TIMEOUT);
while(YOUR_SERVER_SHOULD_RUN){
try{
Socket s = server.accept();
//Do stuff with the new socket
}catch(SocketTimeOutException ignored){}
}
Das Timeout des ServerSocket- verursacht eine Ausnahme zu werfen, wenn es vorbei ist. Sie können diese Ausnahme abfangen und ignorieren. Ziel ist es, den Zustand der While-Schleife zu überprüfen.
Ich habe meine 'Socket'- und' ServerSocket'-Objekte in der 'Server'-Klasse deklariert. Ich akzeptiere den 'Socket' in der' Server' Klasse, und der 'Socket' befindet sich innerhalb einer' while-Schleife', die unendlich läuft um alle Verbindungen zu akzeptieren. Auf der 'Client'-Seite habe ich ein' Socket'-Objekt, das einer Klasse mit dem Namen 'ClientConnection' zugewiesen ist (erweitert runnable, handhabt jede Instanz jedes Clients) – Guest1235
Ich möchte nicht, dass mein Server einfach Timeout, ich wollte es nicht auf Knopfdruck schließen. Bitte lesen Sie die Frage noch einmal, wenn Sie mehr Code benötigen, kann ich sie posten. – Guest1235
U hat mich nicht richtig verstanden ... was ich dir gesagt habe, wird nur benutzt um aus der accept() - Methode des Server Sockets auszubrechen; und ** NOT ** um den Server auszusetzen! Lesen Sie zuerst die Frage und dann beschweren Sie sich .... Wenn Sie nicht aus dieser Methode herauskommen, haben Sie keine Chance, die Schleife zu beenden, wo Sie die eingehenden Verbindungen akzeptieren ... ** DAS TIMEOUT IST NUR UND NUR FÜR Beenden der ACCEPT() -Methode, PRÜFEN, WENN DER SERVER AUSGELEGT WIRD ** und dann accept() aufrufen ... Ihre Schaltfläche kann die Bedingung für die while-Schleife umschalten und der Server wird nur heruntergefahren, wenn Sie Ihre alberne drücken Taste! – tedy42
- 1. Python, Windows-Dienst beenden (vom Socket trennen)
- 2. Socket konsequent trennen C++
- 3. Socket beim ersten Mal trennen
- 4. Socket Server trennen und erneut verbinden Puffer Fehler?
- 5. Android: Socket-Client keine Nachricht vom Server
- 6. Client vom serverseitigen Signalgeber trennen
- 7. Java Socket vom Socket in Echtzeit gelesen
- 8. Android, Java, Socket, bestimmen Remote-Host trennen
- 9. Server-Socket-Fehler Timer-Verwaltung
- 10. Wie sende ich Daten vom Socket-Server zur aspx-Seite?
- 11. Java-Socket-Client kann keine Daten vom Knoten-Server empfangen
- 12. Wie sende ich Daten vom Web-Socket-Server zum Client?
- 13. Verarbeitung empfangener Daten vom Socket
- 14. Java-Socket-Server blockiert
- 15. Restlet Server-Socket-Timeout
- 16. Konfigurieren Sie einen Java-Socket zu Fail-Fast beim Trennen?
- 17. Datum und Monat vom angegebenen Datum trennen
- 18. CKEditor trennen Sie die Symbolleiste vom Editor
- 19. PHP Socket Server im Vergleich zu node.js: Web Chat
- 20. TCP Python Socket Server Antwort
- 21. Kann keine Socket-Nachricht vom Client senden
- 22. Schreiben einer Socket-Server-Anwendung
- 23. Perl: Lese-Timeout im Client-Socket setzen
- 24. Managed Socket Server-Komponente
- 25. Java-Socket-Server und eingebettetes Gerät - kann die Verbindung nicht richtig trennen
- 26. Java (Client) und C# (Server) TCP-Socket. und Server lesen unendliche letzte Daten vom Client
- 27. Node.js Proxy-Server-Socket auflegen
- 28. Java IO, Socket-Server-Adresse
- 29. C# Socket Server Frage senden
- 30. Trennen einer Firebase Socket ohne Aktualisieren oder Schließen der Seite
Bitte vandalisiere deine Posts nicht. Klicken Sie bitte auf Löschen, um den Beitrag zu löschen, wenn Sie ihn löschen möchten. –
@PraveenKumar Ich kann den Beitrag leider nicht löschen. Bitte kennzeichnen Sie es für Spam. Danke – Guest1235
Bitte hebe ein Mod-Flag an und erkläre, warum du es löschen willst. –