2011-12-29 256 views
1

一方のエンドでJavaアプレットを実行しているクライアントともう一方のサーバーで実行しているクライアントでシステムをプログラミングしています。今私は同じコンピュータ上にクライアントとサーバーを持っています。しかし、クライアントとして、私はアプレットを見ることができないと私は以下のようなエラーが出る:URLConnectionクラスjava.net.ConnectException:接続が拒否されました:接続

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

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

を私はhttp://localhost:8080/とポートの競合を確認:以下

 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 

をさかのぼる問題がどこです。私は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

+0

この例外を生成するコードを投稿してください。また、ServerSocketバインディングコードをポストします。 –

+0

@Hippo。 OPは、クライアントとサーバーが同じホスト上で実行されていることを示します。 –

答えて

1

私の推測によれば、サーバーはループバックアドレス(127.0.0.1、別名localhost)にバインドされていると推測されます。サーバーソフトウェアの内容は投稿しませんでしたが、代わりに0.0.0.0でバインドするように構成を変更してください。それはあなたの問題を解決するはずです。

+0

申し訳ありません。サーバーはすでにパックされており、分散されているためです。私自身は元のコードを持っていません。私が知っているのは、自分のコンピュータでサーバーを実行するための設定です。私はここで少しぼやけています。バインディングを再構成する方法を知ってもいいですか? – Veronica

+0

ありがとうございました!私はあなたが言ったことを消化したら、あなたが言及したように間違いなくチェックします。ハッピーニューイヤー〜 – Veronica

関連する問題