Załóżmy, że mamy prostą parę klient/serwer Echo w Javie. Jak rozumiem, gdy tylko jedna strona gniazda się zepsuje, całe połączenie zniknie.W programowaniu w sieci java, czy istnieje sposób na utrzymanie otwartej strony serwera nawet po wyłączeniu strony klienta?
Ale jeśli chcę serwer, który zawsze może pozostać przy życiu, nawet po śmierci klienta. Chcę móc wznowić przerwane połączenie.
Echo Server:
import java.net.Socket;
import java.net.ServerSocket;
public class EchoServer {
public static void main(String[] args) throws Exception {
// create socket
int port = 4444;
ServerSocket serverSocket = new ServerSocket(port);
System.err.println("Started server on port " + port);
// repeatedly wait for connections, and process
while (true) {
// a "blocking" call which waits until a connection is requested
Socket clientSocket = serverSocket.accept();
System.err.println("Accepted connection from client");
// open up IO streams
In in = new In (clientSocket);
Out out = new Out(clientSocket);
// waits for data and reads it in until connection dies
// readLine() blocks until the server receives a new line from client
String s;
while ((s = in.readLine()) != null) {
out.println(s);
}
// close IO streams, then socket
System.err.println("Closing connection with client");
out.close();
in.close();
clientSocket.close();
}
}
}
jakieś wskazówki docenione dzięki
Przeczytaj o TCP i UDP. W przypadku TCP nie jest to możliwe, sam będziesz musiał sobie poradzić z ponownym połączeniem. Z UDP jest to możliwe, ale ma inne implikacje. –
Dlaczego chcesz to zrobić? Ponowne połączenie przerwanego połączenia jest niemożliwe, ale może istnieć inny sposób robienia tego, co chcesz. – tbodt
@tbodt - inny sposób - hmm, jak co?> – Coffee