【问题标题】:Trouble running a Java application on localhost在 localhost 上运行 Java 应用程序时遇到问题
【发布时间】:2015-08-03 00:53:05
【问题描述】:

编辑:端口 135 似乎工作。排序。它似乎并没有拒绝连接,它让我可以在控制台中写东西,尽管当我改变线路时没有任何反应。我会尝试更多的东西

我正在尝试运行这个:

import java.net.*;
import java.io.*;
public class MainProgram {

    private static String host;
    public static void main(String[] args) 
    {
        host = "localhost";

        for (int i = 1; i < 10001 ; i++)
        {
            try {
                Socket socket = new Socket(host , i);
            }catch (UnknownHostException e){
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

}

但输出始终是拒绝连接。以下是部分输出:

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 java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)

有没有办法解决这个问题?我的远程 java 应用程序的调试配置如下所示:

http://i.stack.imgur.com/Vbm0l.png

我已经安装了 WAMP 服务器,也许我应该使用它?我不知道。

【问题讨论】:

    标签: java localhost


    【解决方案1】:

    使用您的本地 IP 地址而不是使用“本地” 使用 "cmd> ipconfig" 找到你的 localhost 的 ip 地址,然后像下面这样添加它:

    import java.net.*;
    import java.io.*;
    public class MainProgram {
    
    private static String host;
    public static void main(String[] args) 
    {
        host = "192.168.0.13";
    
        for (int i = 1; i < 10001 ; i++)
        {
            try {
                Socket socket = new Socket(host , i);
            }catch (UnknownHostException e){
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
              }
          }
      }
    
    }
    

    记住这是我的本地主机IP!你可以是别的东西。

    【讨论】:

    • 假设 localhost 的 DNS 查找工作正常,这应该不是必需的。
    【解决方案2】:

    在您的 localhost 中没有监听服务器套接字。您需要运行一个服务器套接字来监听客户端连接的端口。例如:

    Server Socket:
    +++++++++++++++++++++++++++++++++++++++++++
    
        enter code here
    
    package com.jdbc.test.net;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
         public static void main(String[] args) {
          Socket socket=null;
          BufferedReader br=null;
          PrintWriter pw=null;
          try {
    
           ServerSocket server=new ServerSocket(3081);
           while(true){
            socket=server.accept();
            System.out.println("server:"+socket.getRemoteSocketAddress());
           }
    
          } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }finally{
    
           try {
            pw.close();
            br.close();
            socket.close();
           } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           }
          }
    
         }
        }
    
    +++++++++++++++++++++++++++++++++++++++++++
    
    Cleint Socket:
    `enter code here`
    +++++++++++++++++++++++++++++++++++++++++++
    package com.jdbc.test;
    
    import java.net.*;
    
    import java.io.*;
    public class MainProgram {
    
        private static String host;
        public static void main(String[] args) 
        {
            host = "localhost";
    
            //for (int i = 10000; i < 10001 ; i++)
            {
                try {
                    Socket socket = new Socket(host , 3081);
                }catch (UnknownHostException e){
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    
    }
    
    +++++++++++++++++++++++++++++++++++++++++++
    

    【讨论】:

      【解决方案3】:

      如果您没有任何想法,请开始阅读此Socket Tutorial

      我建议您编写自己的服务器套接字来监听来自客户端代码的连接(类似于您编写的代码)。 使用高于 5000 的高端口号以避免保留端口和其他可能被您的计算机程序使用的端口。

      【讨论】:

        猜你喜欢
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多