java - 防火墙阻止 TCP 聊天客户端

标签 java tcp firewall

我编写了小型 TCP 聊天客户端和服务器。开始在本地主机上运行,​​现在我将其移至外部主机。就我个人而言,它工作得很好,因为我禁用了防火墙,但是在另一台机器上它无法获取 IOException (在创建套接字时)。尝试将我使用 9764 的端口添加到入站和出站规则中,后来完全禁用防火墙,但仍然无法获得相同的 IOException。有什么想法吗?

错误日志:http://pastebin.com/zEbFbX4Y 客户代码:https://github.com/karosas/Simple-tcp-chat-client

此处捕获异常:

try {
        client = new ChatClient();
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        JOptionPane.showMessageDialog(that, "Unknown host exception");
    } catch (IOException e) {
        JOptionPane.showMessageDialog(that, "IOException");
        e.printStackTrace();
    }

这会导致 ChatClient ->

public ChatClient() throws UnknownHostException, IOException {

    server = new Socket(host,port);
    out = new PrintWriter(server.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(
                        server.getInputStream()));
    stdIn = new BufferedReader(new InputStreamReader(System.in));
    sc = new ServerConn(server);
}

它导致 ServerConn

private BufferedReader in = null;

public ServerConn(Socket server) throws IOException {
    in = new BufferedReader(new InputStreamReader(
            server.getInputStream()));
}

public void run() {
    String msg;
    try {
        while((msg = in.readLine()) != null) {
            System.out.println(msg);
        }
    } catch(IOException e ) {
        System.err.println(e);
    }
}

谢谢你的一切。

最佳答案

发生的情况是,在本地主机上,连接不需要通过互联网路由器的防火墙的权限,但是当它连接到不同的互联网路由器时,如果该路由器没有将该端口列入白名单,则该路由器可以拒绝您访问服务器,因此您需要进入互联网路由器的NetBIOS(服务器的互联网路由器),然后将端口列入白名单,通常位于:

高级 > NAT > 虚拟服务器/端口转发。

有关如何执行此操作的更多信息,请阅读互联网路由器手册。

编辑: 您正在做的是尝试连接到 127.*..** 地址,这意味着它甚至不会连接到您的网络。在服务器计算机上右键单击任务栏选择任务管理器转到性能选项卡并选择 wifi 然后找到 IpV4 地址并使用它而不是 127.7.13.129

关于java - 防火墙阻止 TCP 聊天客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509533/

相关文章:

http - 如何知道给定请求中HTTP客户端使用的代理

electron - 我想阻止 Electron 应用程序与外界通信

ubuntu-16.04 - UFW 防火墙不适用于 DigitalOcean 中的 Ubuntu

java - Java线程中的System.exit

java - Android 9 上相机 "1"的 Sinch VideoCaptureThread 问题

c++ - 客户端和服务器无法交换数据,因为都得到 "stuck"

firewall - 我的防火墙阻止了从 docker 容器到外部的网络连接

java - 为什么使用 AspectJ 的 google 缓存很慢,而 SpringCaching 却更快

使用UTF-8字符将SVG转换为PNG的Java代码

python - 如何纯粹在 python 中实现 tcpflow 功能(跟随 tcp 流)