Hello good day to all.
I am creating a networking program in java for my Internet Cafe. I have this code for my server
import java.io.*; import java.net.Socket; import java.net.ServerSocket; public class Server { private String name; private int id; private Socket socket = null; private ServerSocket serversocket = null; private ObjectInputStream ois = null; public Server() { new Thread(receive).start(); while(true) { try { serversocket = new ServerSocket(4445); socket = serversocket.accept(); System.out.println("Connected.."); } catch(IOException e) { e.printStackTrace(); } } } Runnable send = new Runnable(){ public void run () { } }; Runnable receive = new Runnable(){ public void run () { while(true) { try { ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); User user = (User) ois.readObject(); System.out.println(user); } catch(IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } } } }; public static void main(String [] args) { new Server(); } } My problem is that I cant access my instance variable inside my Runnable interface code.
For example the "socket" instance. is not accessible inside this code
Runnable receive = new Runnable(){ public void run () { while(true) { try { ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); User user = (User) ois.readObject(); System.out.println(user); } catch(IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } } } }; What is the best approach on this and why is not accessible inside that code?