0

ここ(クラスの一部)で何が問題なのかを確認するのに苦労しています:

public class Network implements Runnable {    
    private static Network cachedInstance;

    private static boolean connected;

    //private Socket clientSocket;
    private SSLSocket clientSocket;
    private PrintWriter out;
    private BufferedReader in;

    private Map<String, SyncObject> waitForServer;

    private Network(final String hostname, final int port) {
        try {
            Socket baseSocket = new Socket();
            baseSocket.connect(new InetSocketAddress(hostname, port), Config.TIMEOUT);
            clientSocket = (SSLSocket)SSLSocketFactory.createSocket(baseSocket, hostname, port, true);
            clientSocket.startHandshake();
            out = new PrintWriter(clientSocket.getOutputStream(), true);     
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            connected = true;
        } catch (IOException ex) { 
            connected = false;
        }

        waitForServer = new HashMap<>();
    }

エラーが発生します:

C:\Users\Frank\Dropbox\NetbeansProjects\TradingCardGame\src\network\Network.java:47: error: non-static method createSocket(Socket,String,int,boolean) cannot be referenced from a static context
        clientSocket = (SSLSocket)SSLSocketFactory.createSocket(baseSocket, hostname, port, true);

どうすれば静的なコンテキストにいることができますか?

よろしく。

4

1 に答える 1

2

SSLSocketFactory.createSocketインスタンスメソッドです。これは、クラスのメソッドを呼び出すSSLSocketFactoryに、クラスのインスタンスを作成する必要があることを意味します。createSocket

あなたはこれを試すことができます

SocketFactory sslSocketFactory = SSLSocketFactory.getDefault();
clientSocket = (SSLSocket) sslSocketFactory.createSocket(baseSocket, hostname, port, true);
于 2013-05-19T20:21:12.933 に答える