2017-05-06 9 views
0

를 검색 할 때 :java.net.ConnectException : 연결이 거부 : 연결 나는이 오류의 원인이 무엇인지 알아 내려고 지금 나이 찾고있는 파일

불과 몇 분에 대한
java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:920) 
at org.apache.commons.net.ftp.FTPClient._retrieveFileStream(FTPClient.java:1980) 
at org.apache.commons.net.ftp.FTPClient.retrieveFileStream(FTPClient.java:1967) 
at me.ItsJasonn.Main.Core.init(Core.java:48) 
at me.ItsJasonn.Main.Core$1.run(Core.java:21) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$500(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

전에 나는 그것을 실현 파일이나 폴더에 대한 사용 권한과 관련이 있습니다 (어떤 파일인지 정확히 알지 못합니다).

내 집에있는 NAS FTP 서버에 연결하고 로컬 인터넷을 사용합니다.

package me.ItsJasonn.Main; 

import java.awt.EventQueue; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.InetAddress; 
import java.net.Socket; 

import org.apache.commons.net.ftp.FTP; 
import org.apache.commons.net.ftp.FTPClient; 

public class Core { 
    private static ServerThread serverThread; 

    public static void main(String args[]) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       Core core = new Core(); 
       core.init(); 
      } 
     }); 
    } 

    public void init() { 
     new MainInstance(this); 

     BufferedReader reader = null; 
     String ip = null; 

     Socket socket = null; 
      try { 
       FTPClient client = new FTPClient(); 
       try { 
        client.connect("84.27.126.40", 21); 
        client.login(Login.USERNAME, Login.PASSWORD); 

        client.enterLocalPassiveMode(); 
        client.setFileTransferMode(FTP.ASCII_FILE_TYPE); 
        client.setFileType(FTP.ASCII_FILE_TYPE); 

        client.changeWorkingDirectory("homes"); 
        client.changeWorkingDirectory("Jason"); 

        System.out.println(client.printWorkingDirectory()); 

        InputStream stream = client.retrieveFileStream("kingkongproperties.txt"); 
        reader = new BufferedReader(new InputStreamReader(stream, "UTF-8")); 
        ip = reader.readLine(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } finally { 
        if(reader != null) { 
         reader.close(); 
        } 

        if(client.isConnected()) { 
         try { 
          client.logout(); 
          client.disconnect(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 

       socket = new Socket(InetAddress.getByName(ip), 4321); 

       serverThread = new ServerThread(socket); 
       Thread start = new Thread(serverThread); 
       start.start(); 
      } catch (IOException e) { 
       try { 
        System.out.println("No server found. Trying again in 2 seconds..."); 

        Thread.sleep(2000); 
        init(); 
       } catch (InterruptedException e1) { 
        e1.printStackTrace(); 
       } 
      } 
    } 

    public ServerThread getServerThread() { 
     return serverThread; 
    } 
} 

답변

0

당신이에 연결을 시도는 IP가 라우터의 IP입니다 : 다음은 내 코드입니다. nas에 포트 포워드를 설정하거나 nas 주소에 로컬로 연결해야합니다.

+0

정말 고마워요! 문제는 외부 IP를 사용하여 동일한 인터넷 연결에서 서버에 액세스하려고 할 때 작동하지 않는 것입니다. – ItsJasonn