Я совершенно новый в java.Сервер завершается из бесконечного цикла while?
Я начал изучать программирование сети Java.
Моя проблема: я оставил свой сервер в бесконечном цикле, чтобы продолжить работу.
Я отправляю сообщение серверу, когда сервер читает это сообщение, он должен выполнить какое-либо действие. он выполняется успешно, но после выхода из моей клиентской программы сервер также завершается, хотя я помещаю его в бесконечный цикл while.
мой код клиента:
private void check_ordersActionPerformed(java.awt.event.ActionEvent evt) {
try {
Socket ss = new Socket("localhost", 4000);
PrintStream pr = new PrintStream(ss.getOutputStream());
pr.println("Supplier Orders");
pr.println(Supplier.username);
pr.close();
this.dispose();
} catch (IOException ex) {
Logger.getLogger(supp_page.class.getName()).log(Level.SEVERE, null, ex);
}
мой код сервера:
int iiiiii = 0;
ServerSocket s1 = new ServerSocket(4000);
String request = null;
while(iiiiii == 0)
{
Socket ss = s1.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(ss.getInputStream()));
request = in.readLine();
switch (request) {
case "Supplier Orders":
Supplier.username = in.readLine();
orders rs = new orders();
rs.setLocation(350, 250);
rs.setSize(800, 350);
rs.setVisible(true);
rs.setTitle("Orders Table");
rs.setResizable(false);
break;
// some other messages here but iam focus on above one
}
}
позвольте мне объяснить еще: когда я называю этот метод его послать сообщение клиенту «Поставщиком Заказы» и имя пользователя .... когда сервер получает это сообщение, он должен запустить страницу gui, содержащую некоторые данные этого поставщика, который дал имя пользователя серверу.
, но когда я закрываю клиент, сервер также завершается ... этого не должно быть. Я хочу, чтобы сервер продолжал работать, а не вышел.
так как это исправить? .. извините за длинный post.
Редактировать
Код для графического интерфейса страницы, он должен показать некоторые данные по таблице: она успешно показали данные, но, как я уже, когда я закрываю клиент, сервер также закрыт, который я не хочу, чтобы это произошло , я хочу сервер продолжать работать не близко
public class orders extends javax.swing.JFrame {
DefaultTableModel t = new DefaultTableModel();
public orders() throws IOException, ClassNotFoundException {
initComponents();
request.setModel(t);
t.addColumn("ID");
t.addColumn("PRODUCT Name");
t.addColumn("PRODUCT TYPE");
t.addColumn("PRODUCT QUANTITY");
t.addColumn("SUPPLIER ID");
t.addColumn("SUPPLIER NAME");
t.addColumn("SUPPLIER COMPANY");
t.addColumn("SUPPLIER ADDRESS");
t.addColumn("SUPPLIER PHONE NUMBER");
ObjectInputStream oin = new ObjectInputStream(new FileInputStream("Orders.bin"));
ArrayList<Order> a = (ArrayList)oin.readObject();
Iterator<Order> iter = a.iterator();
oin.close();
while(iter.hasNext())
{
Order r = iter.next();
if(Supplier.username.equals(r.getP().getS().getId() + r.getP().getS().getCompany()) && r.getStatus().equals("PENDING"))
{
t.addRow(new Object[]{r.getP().getId(),r.getP().getName(),r.getP().getType(),r.getP().getQuantity(),r.getP().getS().getId()
,r.getP().getS().getName(), r.getP().getS().getCompany(), r.getP().getS().getAddress(), r.getP().getS().getPhone_no()});
}
}
}
}
Пара вещей выделяется, но мне нужно знать ваше желаемое поведение. Вы хотите только обрабатывать одного клиента одновременно или одновременно обслуживать несколько клиентов? Когда клиент останавливается, 'in.readLine()' генерирует исключение, которое я не вижу в вашей работе, поэтому это, скорее всего, означает, что программа останавливается. Кроме того, вы должны отделить приемное гнездо от его обслуживания. – DBug
моя программа работает на localhost, поэтому, возможно, для обработки только одного клиента. но причина в том, что сервер закрывается ... У меня есть другие сообщения на том же сервере, как это, и он отлично работает ... сервер не выходит, даже если я закрываю клиента. но я не знаю, почему сервер закрывает это сообщение. – PJA
Любая помощь пожалуйста ... мой вопрос неразрешимый ???? – PJA