2011-10-24 35 views
0

我建立在Java的客戶端服務器應用程序,這裏是我的代碼的Java連接在客戶端服務器應用程序拒絕

客戶

import java.net.*; 
import java.io.*; 

class ClientCode{ 
    public static void main(String args[]) throws Exception { 
     int character; 
     Socket socket = new Socket("112.134.214.53", 8765); 
//i have put my public ip instead of 127.0.0.1 in order to test it is working through the internet or not 
     InputStream in = socket.getInputStream(); 
     OutputStream out = socket.getOutputStream(); 
     String string = "Hello!\n"; 
     byte buffer[] = string.getBytes(); 
     out.write(buffer); 
     while ((character = in.read()) != -1){ 
      System.out.print((char) character); 
     } 
     socket.close(); 
    } 
} 

服務器

import java.io.*; 
import java.net.*; 
public class ServerCode{ 
    public static void main(String[] args){ 
     try{ 
      ServerSocket socket = new ServerSocket(8765); 
      Socket insocket = socket.accept(); 
      BufferedReader in = new BufferedReader (new InputStreamReader(insocket.getInputStream())); 
      PrintWriter out = new PrintWriter(insocket.getOutputStream(), true); 
      String instring = in.readLine(); 
      out.println("The server got this: " + instring); 
      insocket.close(); 
     } 
     catch (Exception e) {} 
    } 
} 

都是使用我的家庭adsl單端口路由器連接到互聯網的同一臺計算機上運行。

服務器應用程序運行正常,但當我的客戶端通過公網IP,問題就開始連接到服務器,下面是錯誤消息

Exception in thread "main" 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 java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at ClientCode.main(ClientCode.java:6) 

我的卡巴斯基網絡監控器顯示我,我的端口8765是確定和工作

+0

監聽服務器的IP地址? –

+0

您是否缺少部分異常?看起來它被切斷了。 –

+0

@Shakedown不,這是我從日食IDE得到的 – VibeeshanRC

回答

1

可能有兩個可能的原因,出現此異常:

1-沒有服務聽你試圖連接到端口。對於調試,您可以嘗試使用瀏覽器加載http://112.134.214.53:8765,並查看它是否與服務器連接。

2-(如果一切正常)這可能是一個防火牆問題。

+0

謝謝,但我停止了窗口7和卡巴斯基防火牆,同時,如果我給本地IP它工作正常,但不與公共IP;它會與http協同工作嗎?它會與http協同工作嗎?當我輸入112.134.214.53我可以連接到我的路由器配置屏幕,這意味着我的公共IP是正確的。 – VibeeshanRC

+1

@vibeeshanRC:這個線程似乎相關http://stackoverflow.com/questions/3602167/java-networking-connection-refused-yes-my-server-is-running。 –

+1

接受的答案是:「某些路由器不允許內部網絡連接到路由器的外部IP地址 您可以嘗試使用telnet連接到您的服務器套接字如果telnet無法建立一個連接,這可能是一個網絡問題。「 –

0

我也有過這個問題。我正在使用Netbeans,我一直在收到「java.net.ConnectException:連接被拒絕:」但後來我嘗試使用jGrasp,它的工作......也許這可以提供一些額外的疑難解答幫助。也可能是您只需要一個Java策略文件。

相關問題