Java Networking"拒绝连接:连接"

10 java sockets port networking

我一直试图让一个简单的网络测试程序运行没有结果.

服务器:

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();
        }
    }
    }
}
Run Code Online (Sandbox Code Playgroud)

客户:

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();
    }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用127.0.0.1或我的内部IP作为主机名时,程序运行正常.但每当我切换到我的外部IP地址时,它都会抛出java.net.ConnectException: Connection refused: connect错误.

我故意选择这样一个不常见的端口,看看是不是问题,没有运气.我可以使用telnet连接没有问题,但是当我尝试使用canyouseeme.org访问端口时,它告诉我连接超时.我甚至试图禁用所有防火墙和防病毒软件,包括Windows默认防火墙和路由器防火墙,所有端口都已转发并启用了DMZ,它仍然表示连接超时.我使用Comcast作为我的ISP,我怀疑他们阻止这样一个随机端口.

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

我不知道此时发生了什么; 我几乎尝试过我所知道的每一个技巧.如果有人知道为什么端口可能被阻止,或至少某种方式使程序工作,这将是非常有帮助的.

Nal*_*chu 7

这些问题属于以下情况:

  1. 客户端和服务器,它们中的任何一个或两个都不在网络中.

  2. 服务器未运行.

  3. 服务器正在运行但没有侦听端口,客户端正在尝试连接.

  4. 防火墙不允许用于主机端口组合.

  5. 主机端口组合不正确.

  6. 连接字符串中的协议不正确.

如何解决问题:

  1. 首先ping你的目标服务器.如果正确ping通,那么客户端和服务器都在网络中.

  2. 尝试使用telnet连接到服务器主机和端口.如果你能够连接它,那么你在客户端代码中犯了一些错误.


mpo*_*llo 2

无论如何,您的代码在我的系统上运行良好。

我不想这么说,但这听起来像是防火墙问题(我知道您已经经过三次检查)或康卡斯特问题,这比您想象的更有可能。我会测试一下你的ISP