Я постараюсь объяснить мою проблему подробно.Не стесняйтесь спрашивать, если вам нужна дополнительная информация.
У меня есть соединение мульти-клиент / сервер с использованием Java-сокетов.Все биржи работают в соответствии с протоколом в каждом отдельном случае.Метод searchFlight (destination, date) запрашивает базу данных SQL (извините, я не могу ее предоставить) и возвращает переменную ResultSet.И затем метод displaySelected (ResultSet) отправляет ResultSet в виде строки клиентской строке построчно.
Связь работает хорошо, пока сервер не отправит клиенту «час».Я проверил значения на сервере, и оказалось, что сервер отправляет правильную строку клиенту (которая должна быть «Полетный час (ЧЧ: ММ):»), но клиент печатает только предыдущую.Конкретно, это застряло так:
(1) Make reservation | (2) Cancel reservation
1
Choose the departure date (YYYY-MM-DD):
2012-01-01
(1) Go to Encampment | (2) Go to City:
2
+------|-----------|------------|-------------|----------|-------+
| Code | Company | Dest | Date | Hour | Seats |
+------+-----------+------------+-------------+----------+-------+
| AER2 | Aerocamp | City | 2012-01-01 | 07:00:00 | 5 /6 |
| COP2 | CopterFly | City | 2012-01-01 | 09:00:00 | 5 /6 |
| AER1 | Aerocamp | City | 2012-01-01 | 10:00:00 | 3 /6 |
| H001 | HeliAir | City | 2012-01-01 | 11:00:00 | 6 /6 |
| COP1 | CopterFly | City | 2012-01-01 | 11:00:00 | 6 /6 |
| AER2 | Aerocamp | City | 2012-01-01 | 13:00:00 | 4 /6 |
| COP2 | CopterFly | City | 2012-01-01 | 15:00:00 | 2 /6 |
| AER1 | Aerocamp | City | 2012-01-01 | 16:00:00 | 6 /6 |
| COP1 | CopterFly | City | 2012-01-01 | 17:00:00 | 2 /6 |
| COP3 | CopterFly | City | 2012-01-01 | 20:00:00 | 3 /6 |
+------|-----------|------------|-------------|----------|-------+
Flight code (XXX#):
AER1
Flight code (XXX#):
Flight code (XXX#):
Я застрял с этой проблемой в течение нескольких дней, и я действительно не знаю, как ее исправить.Я перепробовал много альтернатив без успеха.Я надеюсь, что кто-то более опытный с Java, чем я, мог бы помочь мне.
Заранее спасибо.
Вы можете увидеть весь мой код ниже.
СТОРОНА КЛИЕНТА
public class Client {
static Socket clientSocket = null;
public static void main(String[]args) throws IOException{
PrintWriter out = null;
BufferedReader in = null;
try {
clientSocket = new Socket("localhost", 1024);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host:");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromClient = null;
try {
while (((fromServer = in.readLine()) != null)) {
System.out.println(fromServer);
System.out.flush();
if(!fromServer.endsWith(" ")){
fromClient = stdIn.readLine();
}
if (fromClient != null) {
out.println(fromClient);
out.flush();
}
}
out.close();
in.close();
stdIn.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}