Вопрос у меня к опытным товарищам. Рылся в примерах, где показывалось как сделать сервер и клиент. Нашел, более-менее удачный, где клиент передавал объект на сервер, сервер обрабатывал объект и пулял обратно клиенту. После чего сервер прекращал работу. [куски кода] Код сервера.
public void runServer() throws IOException,ClassNotFoundException { ServerSocket serverSocket = new ServerSocket(PORT); System.out.println("Сокет создан. Ждем соединения..."); Socket socket = serverSocket.accept(); ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream()); Message message = (Message)objectInputStream.readObject(); System.out.println("Приняли объект: "+message.messageDesc()); doSomething(message); System.out.println("Обработали объект на сервере: "+message.messageDesc()); objectOutputStream.writeObject(message); System.out.println("Отправили объект клиенту"); socket.close(); }
Код клиента.
public static void main(String[] args) throws IOException, UnknownHostException, ClassNotFoundException { if ((args.length == 2) && Client.isInteger(args[0]) && Client.isInteger(args[1])) { Integer firstNumber = Integer.decode(args[0]); Integer secondNumber = Integer.decode(args[1]); Socket socket = new Socket("localhost",Server.PORT); ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream()); Message message = new Message(firstNumber,secondNumber); System.out.println("message created = " + message.messageDesc()); objectOutputStream.writeObject(message); Message returnMessage = (Message)objectInputStream.readObject(); System.out.println("Message Result = " + returnMessage.getResult()); socket.close(); } else { System.out.println("не верные аргументы. Используйте: Client "); } }
Вопрос: как сделать, чтоб сервер всегда работал, и выключался по команде: либо из консоли либо по нажатию кнопки (скорее всего будет графический интерфейс с функциями перезапуска и выхода)
[upd]Тут походу вопрос возник. В указанном выше коде, соединение происходит по UDP. Для работы нескольких клиентов с базой (через сервер приложений) насколько это праивильно? Может есть более верный способ решить задачу? (другой протокол, готовый сервер приложений итп)
[upd2] Комментаторам спасибо. Вместо того чтоб отшучиваться, могли бы вот хотя бы эту ссылочку дать и вопрос был бы решен.