2016-05-03 6 views
1

Я создал базовую серверную и клиентскую программу на Java, и когда вы запускаете сервер, чем клиент, он соединяет эти два, если пользователь вводит пароль «root», и я сохранил это значение в качестве пароля, а я Я пытаюсь это сделать, когда соединение начинается на стороне сервера, оно выводит «Пароль», чем значение пароля, но каждый раз, когда я запускаю его, выходы программы «Пароль пуст», почему он мне это дает? ? Я изменил строку на статику, и она все еще дала мне нуль, пожалуйста, помогите и объясните?Server-Client Java

стороне сервера код

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 


public void lookForConnection(){ 
    Socket connection; 
    clientMethod cM = new clientMethod(); 
    { 
     try 
     { 
      System.out.print("Program running..."); 
      ServerSocket serverSocket = new ServerSocket(6789); 
      while(true) 
      { 
       connection = serverSocket.accept(); 
       System.out.println("Connected Succesfully!"); 
       System.out.println(connection.getInetAddress().getHostName()); 
       System.out.println("The password for this connection is " + cM.password);    
      } 
     } 
     catch(IOException ex) 
     { 
      System.out.println (ex.toString()); 

     } 

    } 
} 

стороне клиента код

import java.io.EOFException; 
import java.util.Scanner; 
import java.io.IOException; 
import java.net.InetAddress; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class clientMethod { 
    public String serverIP; 
    public String password; 
    public Socket connection; 
    public void Client(String host) 
    { 
     serverIP = host; 
    } 
    public void startRunning() { 
     try{ 
      Scanner console = new Scanner(System.in); 
      System.out.print("Please provide the admin password: "); 
      password = console.next(); 
      if(password.compareTo("root") == 0) { 
       connectToServer();   
      //} 
      } 
     } 
     catch(EOFException eofException){ 
      System.out.print("\n Client terminated the connection"); 
     } 
     catch(IOException ioException) { 
      ioException.printStackTrace(); 
     } 
    } 
    private void connectToServer() throws IOException { 
     System.out.println("Attempting connection..."); 
     connection = new Socket(InetAddress.getByName(serverIP), 6789); 
     System.out.println("Connected to " + connection.getInetAddress().getHostName()); 

    } 
} 

ответ

1

Вероятно потому, что вы никогда не отправить пароль на ваш сервер, вы только напечатает значение переменной password вашей локальной переменной cM что никогда не устанавливается так, что это точно null.

Проверить this tutorial, чтобы увидеть, как отправить данные на сервер, но в основном идея заключается в том, чтобы записать данные с вашего клиента с помощью OutputStream, что вы получите от Socket#getOutputStream(), он будет передавать данные на сервер и с сервера вы читаете это от Socket#getInputStream().

+0

но на моей стороне клиента не является паролем переменной, установленным на значение входа пользователя? Значит, это не имеет значения? –

+0

нет, вам нужно сериализовать его, нет волшебства, пожалуйста, прочитайте учебник, который я предоставляю, вы лучше поймете –

Смежные вопросы