我也遇到过下面的错误连接错误:一个奇怪的连接被拒绝:在Java客户端
java.net.ConnectException: Connection refused: connect
我将在下面,但首先表现出一定的代码,描述,因为它令我感到困惑。我写了一个非常基本的聊天程序,它可以充当服务器或客户端,具体取决于您按下的初始按钮(主机或连接)。根据预期,通过本地主机和互联网上的朋友测试,完美无缺。我已经开始编写第二个软件并使用几乎相同的代码,但拥有更多的类,当尝试连接到同一个程序的主机时出现此错误。所以,prog A可以连接到prog A很好,但是B不能连接到B.一个人可能会承担防火墙问题,但这里是曲折的情节:B可以连接到A,而A可以完美地连接到B.但是B不能连接到自己的另一个副本。我使用了TCP的官方oracle教程,并且在称为A的聊天程序上完美工作。根据按下按钮,A将运行其主要类的一个方法(启动服务器或客户端)。 B关于另一方面,将创建一个类的新的对象,无论是主机
public class Host
{
static ServerSocket serverSocket = null;
static Socket clientSocket = null;
static PrintWriter out = null;
static BufferedReader in = null;
static String inputLine;
public Host() throws IOException
{
serverSocket = new ServerSocket(4444);
System.out.println("Server created, waiting for guest.");
clientSocket = serverSocket.accept();
System.out.println("Guest connected.");
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while ((inputLine = in.readLine()) != null)
{
//if (inputLine.equals("q")) {break;}
System.out.println("Message recieved:" + inputLine);
}
}
}
或客户
public class Guest
{
static Socket socket = null;
static PrintWriter out;
static BufferedReader in = null;
static String inputLine;
public Guest() throws IOException
{
System.out.println("Connecting to host");
try
{socket = new Socket("localhost", 4444);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
catch (UnknownHostException err) {System.out.println("unknown host"); System.exit(3);}
catch (IOException err) {System.out.println(err); /*System.exit(4);*/}
System.out.println("Connected to host");
while ((inputLine = in.readLine()) != null)
{
//if (inputLine.equals("q")) {break;}
System.out.println("Message recieved:" + inputLine);
}
}
}
我有正确的进口,我只是没有把它们贴在这里。这两个程序都尝试连接到本地主机,只有A有效,而另一个则不行。再次,创建一个Guest,我可以连接到chatprogram的服务器。聊天程序客户端可以连接到此服务器。但是这个客户端不能连接到这个服务器。
有没有人遇到类似的东西?有没有一个明显的解决方案,我失踪了?我在这里真的很无能,我直接复制/粘贴服务器/客户端代码。
编辑:堆栈跟踪。
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at mainPack.Guest.<init>(Guest.java:21)
at mainPack.GameStarter.grandMain(GameStarter.java:101)
at mainPack.GameStarter.<init>(GameStarter.java:27)
at mainPack.GameStarter.main(GameStarter.java:34)
我不明白。“聊天程序客户端可以连接到此服务器”和“但该客户端无法连接到此服务器”有什么区别? – EJP 2013-02-25 02:20:21
两个不同的程序,这些程序的目的是能够充当服务器或客户端的另一个实例。程序A可以连接到程序A的另一个实例.B不能连接到另一个B. B可以连接到A,而A可以连接到B,但从来不打算以这种方式使用,但它们可以建立连接。 – 1024 2013-02-25 02:23:19