2016-05-02 17 views
0

Angenommen, ich habe 3 Klassen. Klassen sind Login, HandleMultipleClients und LiveMonitoring class.In Login-Klasse bin ich Server mit mehreren Clients verbunden und sende den Socket zu behandeln mehrere Klassen In dieser Klasse mache ich eine Liste der Clients, die mit dem Server verbunden sind und diese Clients in ein Array. In HandleMultipleClients gibt es eine weitere Funktion, die die Nachricht an bestimmte Clients meiner Wahl auf der Basis von IP-Adresse sendet. Jetzt in Live-Monitoring-Klasse möchte ich eine Nachricht an einen bestimmten Client senden ich die HandleMultipleClients als neue HandleMultipleClients() aufrufen und ein Objekt, so dass dieses neue Objekt keine Liste von Clients wie oben gemacht haben.Ich möchte wissen, dass dort ist jede Methode, mit der ich nicht brauchen ein neues Objekt der Klasse handlemultipleclients machen Meine CodesVerwendung der Klasse ohne neue Instanz

public class Login implements Runnable { 
    @Override 
    public void run() { 
     try { 
      serverSock = new ServerSocket(2101); 
      while (true) { 
       sock = serverSock.accept(); 
       LiveMOnitoring l=new LiveMOnitoring(sock); 
       System.out.println(sock); 
       //clients.put(soc.getPort(),soc); 
      } 
     } 
    } 
} 

public HandleMultipleClients(Socket sock) { 
    soc=sock; 
    clients.put(soc.getPort(),soc); 
} 

public void messagetospecificclients(String ipaddress,String choice) throws IOException, InterruptedException { 
    System.out.print(ipaddress+"\n"+choice); 
    for (Iterator<Integer> iter = clients.keySet().iterator(); iter.hasNext();) { 
     System.out.print("ok1"); 
     int key = iter.next(); 
     java.net.Socket client = clients.get(key); 
     InetAddress zee = client.getInetAddress(); 
     String s = zee.getHostAddress(); 
     System.out.print(s); 
     if (zee.getHostAddress().equals(ipaddress)) { 
      System.out.print("ok2"); 
      dos =new DataOutputStream(client.getOutputStream()); 
      dos.writeUTF(choice); 
     } 
    } 
} 


public class LiveMOnitoring extends javax.swing.JFrame { 
    static Socket csocket; 
    DataOutputStream dos; 
    Map<Integer, java.net.Socket> clients = new HashMap<Integer, java.net.Socket>(); 
    private void ApplicationsActionPerformed(java.awt.event.ActionEvent evt) {            
     h.messagetospecificclients(); 
    } 
} 

Antwort

2

In Java, wenn Sie eine Klasse ohne Instanziierung ein Mitglied Methode verwenden möchten, dann sind Sie die Methode statisch zu machen.

class A 
{ 
    public static void methodName() 
    { 

    } 
} 

Nennen Sie es mit A.methodName();

Verwandte Themen