Сервер приложений в java. (original) (raw)

Previous Entry Flag Next Entry

Сервер приложений в java.

Вопрос у меня к опытным товарищам.
Рылся в примерах, где показывалось как сделать сервер и клиент. Нашел, более-менее удачный, где клиент передавал объект на сервер, сервер обрабатывал объект и пулял обратно клиенту.
После чего сервер прекращал работу.

[**куски кода**]

Код сервера.

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]
Комментаторам спасибо. Вместо того чтоб отшучиваться, могли бы вот хотя бы эту ссылочку дать и вопрос был бы решен.