2015-04-19 1 views
0

Я работаю над простой системой входа в систему клиент/сервер, и у меня возникают проблемы с получением моего сервера для прослушивания правильных данных, отправляемых клиентом. На моем клиенте у меня есть методы sendRegistrationData() и sendLoginData(), и на моем сервере у меня есть waitForRegistrationData() и waitForLoginData(). Код в этих методах хорош и делает то, что они должны делать, но мой сервер, похоже, не может сказать, когда ждать регистрационных данных или данных входа и либо работает через оба метода ожидания, либо переходит к первому, и игнорирует второй.Получение ServerSocket, чтобы узнать, какие данные прослушать для

Например, у меня есть этот метод;

private void waitForData() { 
    setupClient(); 
    waitForRegistrationData(); 
    waitForLoginData(); 
} 

Это было обработано регистрационными данными, а затем обрабатывало данные входа, даже если я только отправил данные для входа. Поэтому я решил попробовать и обойти это, я бы написал int на сервер для sendRegistrationData и sendLoginData, например clientOut.writeInt (1) для sendRegistrationData и clientOut.writeInt (2) для sendLoginData, а затем на стороне сервера я бы сделал int, как показано ниже, чтобы сообщить серверу, как различать эти два;

private void waitForData() { 
    setupClient(); 
    try { 
     if (serverIn.readInt() == 1) 
      waitForRegistrationData(); 

     if (serverIn.readInt() == 2) 
      waitForLoginData(); 
    } catch (IOException ex) { 
     System.out.println(ex.getMessage()); 
    } 
} 

Это работало отлично вчера вечером, но по какой-то причине перестал работать, и когда я пытаюсь войти в систему, как только я начинаю клиент, он просто возвращает нуль, потому что кажется, что сервер не достигает waitForLoginData потому waitForRegistrationData над ним, или так я догадываюсь.

Как я могу узнать, должен ли мой сервер прослушивать регистрационные данные или данные для входа? here's an Imgur ссылка, показывающая мой мой клиент/сервер в действии прошлой ночью, когда она работала по назначению. Прямо сейчас, если я попытаюсь сделать «Вход без регистрации», как видно на этом снимке, это вызовет проблемы, которые я только что сказал, где сервер просто не прослушивает данные для входа.

Надеюсь, я объяснил свою проблему достаточно, чтобы кто-то знал, о чем я говорю. Мне было трудно объяснить эту проблему. Благодарю.

ответ

1

Вы должны позвонить readInt() один раз и, вероятно, использовать результат в инструкции switch. В настоящее время вы пытаетесь использовать два целых числа, когда отправлено только одно.

+0

int data = serverIn.readInt(); \t \t \t переключатель (данные) { \t \t \t Случай 1: \t \t \t \t waitForRegistrationData(); \t \t \t \t break; \t \t \t Случай 2: \t \t \t \t waitForLoginData(); \t \t \t \t break; \t \t \t} \t \t \t \t \t \t работал идеально. Благодарю. – FUBAR