2016-05-02 84 views
0

假设我有3个课程。类是Login,HandleMultipleClients和LiveMonitoring类。在登录类中,我将服务器连接到多个客户端并发送套接字来处理多个类在这个类中,我制作了连接到服务器并将这些客户端放入数组的客户端列表。在HandleMultipleClients中,还有一个函数将消息发送给基于ipaddress的特定客户端。现在,在实时监控类中,我希望将消息发送到特定的客户端,我将handlemultipleclients作为新的Handlemultipleclients()调用,并创建一个对象,以便这个新对象没有任何如上所述的客户端列表。我想知道那里是否存在由我不任何方法需要做出handlemultipleclients类的新对象 我的代码是使用课程而不制作新实例

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(); 
    } 
} 

回答

2

在Java中,如果你想使用一个成员方法没有一个类实例化,那么你做的方法是静态的。

class A 
{ 
    public static void methodName() 
    { 

    } 
} 

A.methodName();

叫它