2015-02-28 3 views
0

Так что я делаю серверный сокет Я вызываю конструктор, чтобы построить серверы, а затем вызвать метод getLocalPort для получения локального порта, но server.getLocalPort() ; бросает исключение нулевого указателя, и я не могу понять, почему я в тупике. Я уверен, что его некоторая глупая ошибка, но я просто не вижу ее.Не могу понять, почему я получаю исключение для своего метода

public SServer(int port) throws SocketException, IOException 
{ 
    ServerSocket server = new ServerSocket(port); 
    server.setReuseAddress(true); 
} 
public int getLocalPort() { 
    int port = server.getLocalPort(); 
    return port; 
} 
+0

У вас есть две разные вещи, называемые 'server' в данном случае - локальная переменная, и поле. Вы устанавливаете локальную переменную, но не поле. (Вы, вероятно, не хотели иметь локальную переменную вообще) – immibis

ответ

1

Вы инициализируете локальный vairable в своем конструкторе вместо инициализации члена вашего класса. Поэтому ваш server участник остается null.

Изменить

public SServer(int port) throws SocketException, IOException 
{ 
    ServerSocket server = new ServerSocket(port); 
    server.setReuseAddress(true); 
} 

в

public SServer(int port) throws SocketException, IOException 
{ 
    server = new ServerSocket(port); 
    server.setReuseAddress(true); 
} 
+0

yep это было. Я знал, что делаю какую-то туповатую ошибку XD – Joe

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