Сервер приложений в java. (original) (raw)
Вопрос у меня к опытным товарищам.
Рылся в примерах, где показывалось как сделать сервер и клиент. Нашел, более-менее удачный, где клиент передавал объект на сервер, сервер обрабатывал объект и пулял обратно клиенту.
После чего сервер прекращал работу.
[**куски кода**]
Код сервера.
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]
Комментаторам спасибо. Вместо того чтоб отшучиваться, могли бы вот хотя бы эту ссылочку дать и вопрос был бы решен.