2011-12-29 257 views
1

我編程,另一端服務器上的其他正在運行的Java Applet與客戶的系統上。現在我在同一臺計算機上有客戶端和服務器。但是,作爲一個客戶,我看不到的小程序,我得到錯誤象下面這樣:URLConnection類java.net.ConnectException:連接被拒絕:連接

 java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at sun.net.NetworkClient.doConnect(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.<init>(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
    at MainJApplet.init(MainJApplet.java:58) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at sun.net.NetworkClient.doConnect(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.<init>(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
    at RequestServer.sendRequest(RequestServer.java:25) 
    at createGUI.createEditingBar(createGUI.java:1313) 
    at GUI.createAndShowGUI(GUI.java:813) 
    at MainJApplet.init(MainJApplet.java:137) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
java.net.ConnectException: Connection refused: connect 
java.lang.NullPointerException 
    at createGUI.createEditingBar(createGUI.java:1315) 
    at GUI.createAndShowGUI(GUI.java:813) 
    at MainJApplet.init(MainJApplet.java:137) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Exception: java.lang.NullPointerException 

下面是哪裏出了問題追溯:

URL url = new URL(ipAddr); 
URLConnection connection = url.openConnection(); 

connection.setDoOutput(true); 
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); // exception happens 

我檢查http://localhost:8080/和端口衝突。我已關閉Windows防火牆,但存在問題。有人可以指點我嗎?任何建議都會很棒!謝謝!

對於長碼我表示歉意。第一個是客戶端。

import javax.swing.*; 
import java.awt.*; 
import java.net.*; 
import java.io.*; 

public class MainJApplet extends JApplet { 

    GUI gui = new GUI(); 
    Thread renewThread; 

    public void init() { 
     //pass parameters from url to applet 
     String filePath = this.getParameter("FilePath"); 
     //temporary solution to bypass the new extention 
     String userName = this.getParameter("UserName"); 
     String ipAddr = this.getParameter("IpAddress"); 
     String userLevel = this.getParameter("UserLevel"); 
     String ticket = this.getParameter("Ticket"); 
     String accessMode = this.getParameter("AccessMode"); //1-normal 2-shared 3-email 

     //sharedTo will be get from the file path infor 
     String sharedTo = this.getParameter("ShareTo"); 
     String type = this.getParameter("Type"); 

     gui.shareTo = sharedTo; 
     gui.ticket = ticket; //this gui.ticket is used to varify email access, will be replaced 

     String relativePath = ""; 
     try { 
      //connect to servlet 

      URL url = new URL(ipAddr); 
      URLConnection connection = url.openConnection(); 

      connection.setDoOutput(true); 
      OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
      //Passing NAME+FILE+TICKET+TYPE to server at the initialization stage 
      out.write("IN"); 
      out.write(userName + "#"); 
      out.write(filePath + "#"); 
      out.write(ticket + "#"); 
      out.write(type + "#"); 
      out.close(); 

      //Wait for server response 
      BufferedReader in = new BufferedReader(
        new InputStreamReader(
        connection.getInputStream())); 

      String dcodedStr; 
      StringBuffer decodedStringBuffer = new StringBuffer(""); 
      while ((dcodedStr = in.readLine()) != null) { 
       decodedStringBuffer.append(dcodedStr); 
      } 

      String dStr = decodedStringBuffer.toString(); 
      in.close(); 

      if (dStr.equals("NOT_AUTHORIZED")) { //not passing authentication check 
       JOptionPane.showMessageDialog(new JFrame(), 
         "Access Denied", 
         "Warning!", 
         JOptionPane.ERROR_MESSAGE); 
       return; 
      } else {//pass authentication check 
       String[] initResp = dStr.split("#"); 
       gui.FID = initResp[0]; //file ID 
       gui.EditMode = Boolean.parseBoolean(initResp[1]); 
       gui.userLevel = 1; //temporary set all as normal user 
       boolean firstOpen = Boolean.parseBoolean(initResp[2]); 
       relativePath = initResp[3]; 
       if (initResp[4].trim().equals("normal")) {//owner 
        gui.accessMode = 1; 
       } else {//shared user 
        gui.accessMode = 2; 
       } 
      } 
     }catch(UnknownServiceException exp){ 
      exp.printStackTrace(); 
     }catch(IOException ex){ 
      ex.printStackTrace(); 
     }catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

    public void destroy() { 
     gui.check_upon_window_close(); 

     if (gui.is_new_drawing == 0) { 
      //2010.9.29 workDir -> FID 
      if (gui.EditMode) { 
       RequestServer.canClose(gui.IpAddress, gui.user, gui.FID); 
      } else { 
       RequestServer.canCloseNoEdit(gui.IpAddress, gui.user, gui.FID); 
      } 
     } 
     renewThread.stop(); 
    } 
} 
+0

我首先檢查到服務器的網絡連接。 – AbdullahC 2011-12-29 12:23:52

+0

請發佈產生此異常的代碼。另外,發佈ServerSocket綁定代碼。 – 2011-12-29 12:24:49

+0

@Hippo。 OP說,客戶端和服務器在同一臺主機上運行。 – 2011-12-29 12:25:34

回答

1

根據你的意見,我的猜測是你的服務器綁定到環回地址(127.0.0.1,又名本地主機)。您沒有發佈服務器軟件,而是更改其配置,以便在0.0.0.0上綁定。這應該解決你的問題。

+0

對不起。因爲服務器已經是打包的,分佈式的。我自己沒有原始代碼。我所知道的是在我自己的計算機上運行服務器的一些配置。我在這裏有點模糊。我可以知道如何重新配置​​綁定嗎? – Veronica 2011-12-29 13:17:07

+0

非常感謝您的幫助!一旦我消化了你所說的話,我肯定會檢查你所提到的。新年快樂〜 – Veronica 2011-12-29 14:02:57

相關問題