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

Mar 08, 2013 14:14


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

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

intellij idea, java, socket

Previous post Next post
Up