当前位置: 首页 > 面试题库 >

Java网络“拒绝连接:连接”

盖嘉珍
2023-03-14
问题内容

我一直在尝试让一个简单的网络测试程序无法运行。

服务器:

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

public class ServerTest {
    public static void main(String[] args) {
    final int PORT_NUMBER = 44827;

    while(true) {
        try {
        //Listen on port
        ServerSocket serverSock = new ServerSocket(PORT_NUMBER);
        System.out.println("Listening...");

        //Get connection
        Socket clientSock = serverSock.accept();
        System.out.println("Connected client");

        //Get input
        BufferedReader br = new BufferedReader(new InputStreamReader(clientSock.getInputStream()));
        System.out.println(br.readLine());

        br.close();
        serverSock.close();
        clientSock.close();
        } catch(Exception e) {
        e.printStackTrace();
        }
    }
    }
}

客户:

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

public class ClientTest {
    public static void main(String[] args) throws IOException {
    final int PORT_NUMBER = 44827;
    final String HOSTNAME = "xx.xx.xx.xx";

    //Attempt to connect
    try {
        Socket sock = new Socket(HOSTNAME, PORT_NUMBER);
            PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
        //Output
        out.println("Test");
        out.flush();

        out.close();
        sock.close();
    } catch(Exception e) {
        e.printStackTrace();
    }
    }
}

当我使用127.0.0.1或我的内部IP作为主机名时,该程序运行良好。但是,每当我切换到外部IP地址时,都会引发java.net.ConnectException: Connection refused: connect错误。

我特意选择了一个不常见的端口,以查看是否是问题所在,但没有运气。使用telnet可以毫无问题地进行连接,但是当我尝试使用canyouseeme.org访问端口时,它表明连接超时。我什至尝试禁用所有防火墙和防病毒软件,包括Windows默认防火墙和路由器防火墙,并转发所有端口并启用DMZ,但它仍说连接超时。我将Comcast用作我的ISP,并且怀疑它们是否会阻塞这样的随机端口。

当我使用数据包跟踪器时,它显示我的计算机发送SYN并接收RST /
ACK时的TCP流量,因此它看起来像一个标准的阻塞端口,并且没有其他可疑的数据包流量在进行。

我不知道现在发生了什么。我几乎已经尝试了我所知道的所有技巧。如果有人知道为什么端口可能被阻塞,或者至少以某种方式使程序能够工作,那将非常有帮助。


问题答案:

对于它的价值,您的代码在我的系统上可以正常工作。

我不愿意这么说,但这听起来像是防火墙问题(我知道您已经对它进行了三重检查)或Comcast问题,这比您想象的要多。我会测试您的ISP。



 类似资料:
  • 问题内容: 我已经为RMI的客户端编写了以下代码。但是得到 代码: 问题答案: 如果要在绑定,重新绑定或查找时获取该注册表,则注册表不会运行。如果让它进行远程调用,请参阅Javadoc随附的RMI FAQ 中的项目A.1 ,如果您正在运行Linux,还请检查/ etc / hosts文件是否将127.0.0.1映射到localhost和您的真实IP地址。到您的真实主机名- 在某些Linux发行版中

  • 服务器名设置为“localhost”,端口为80。使用这些参数,我可以运行程序而没有任何异常,但是当代码到达in.readutf()行时,它会旋转。 当端口更改为任何其他端口时,我会得到一个连接拒绝异常。 另一方面,当我创建一个简单的“ServerSocket”程序接收端口80上的请求时,我会得到“Address Academy in use”异常,除了80之外的任何端口都适用于“ServerSo

  • 我对AmazonEC2和Filezilla是完全陌生的。当我尝试连接到服务器时,收到一条错误消息:“错误:网络错误:连接被拒绝” 问题是,我无法获得关于如何将Filezilla与AmazonEC2结合使用的完整教程。我尝试按照本文中的步骤操作:使用Filezilla和SFTP连接到AmazonEC2文件目录,但它仍然不起作用。 到目前为止我所做的: 我在实例的安全组中添加以下端口: 菲利齐拉: 问

  • 我使用的是Postgres 9.1.5。JDBC在第一个实例中运行良好,但当我再次尝试时,它开始拒绝连接。例如,我使用JDBC登录到我的web应用程序,效果很好。但是,我尝试使用连接获取其他数据,它引发了一个异常:连接被拒绝。我确信我的代码没有问题,因为上次运行良好的登录JDBC也引发了一个异常:连接被拒绝。 重新启动postgres windows服务后,它再次工作。然后,登录JDBC,获取一些

  • 我试图实现一个TCP连接,在服务器端一切正常,但当我运行客户端程序(从客户端计算机)时,我得到以下错误: 服务器代码: 客户端代码: