2016-05-30 2 views
-1

私はスレッドを作成しようとすると、私はmethod getInstance()エラーが見つかりません。サーバスレッドメソッドgetInstance()が見つかりません

import java.net.*; 
import java.io.*; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class Server { 
    public static void main(String args[]) {  
    Thread discoveryThread = new Thread(DiscoveryThread.getInstance());  
    discoveryThread.start(); 
    } 
} 

class DiscoveryThread implements Runnable { 
    DatagramSocket socket;  

    @Override 
    public void run() { 
    try { 
     //Keep a socket open to listen to all the UDP trafic that is destined for this port 
     socket = new DatagramSocket(8888, InetAddress.getByName("0.0.0.0")); 
     socket.setBroadcast(true); 

     while (true) { 
     System.out.println(getClass().getName() + ">>>Ready to receive broadcast packets!"); 

     //Receive a packet 
     byte[] recvBuf = new byte[15000]; 
     DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length); 
     socket.receive(packet); 

     //Packet received 
     System.out.println(getClass().getName() + ">>>Discovery packet received from: " + packet.getAddress().getHostAddress()); 
     System.out.println(getClass().getName() + ">>>Packet received; data: " + new String(packet.getData())); 

     //See if the packet holds the right command (message) 
     String message = new String(packet.getData()).trim(); 
     if (message.equals("DISCOVER_FUIFSERVER_REQUEST")) { 
      byte[] sendData = "DISCOVER_FUIFSERVER_RESPONSE".getBytes(); 

      //Send a response 
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, packet.getAddress(), packet.getPort()); 
      socket.send(sendPacket); 

      System.out.println(getClass().getName() + ">>>Sent packet to: " + sendPacket.getAddress().getHostAddress()); 
     } 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(DiscoveryThread.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    } 
    } 

エラー:

Server.java:10: error: cannot find symbol 
Thread discoveryThread = new Thread(DiscoveryThread.getInstance()); 
                 ^
    symbol: method getInstance() 
    location: class DiscoveryThread 
+1

なぜ新しいDiscoveryThreadはありませんか? –

+1

あなたが書いたまたは継承していないメソッドが存在しないということに、なぜ驚いていますか? – EJP

+0

'DiscoveryThread'クラスは' getInstance() 'メソッドを持たないようです。代わりに 'new'を使って構築してみてください。 –

答えて

1

DiscoveryThreadクラスがgetInstance()方法を有することがないように見えます。代わりにnewを使用して構築してください。

関連する問題