防火墙阻塞tcp聊天客户端

时间:2015-04-08 08:25:37

标签: java tcp firewall

我写了一个小的TCP聊天客户端和服务器。在localhost上开始运行时,现在我将它移动到外部主机。个人工作正常,因为我已禁用防火墙,但在另一台机器上它无法获取IOException(在创建Socket时)。尝试添加端口我正在使用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);
    }
}

感谢您的一切。

1 个答案:

答案 0 :(得分:1)

正在发生的事情是,在localhost上,连接不需要通过您的互联网路由器防火墙的权限,但是当它连接到不同的互联网路由器时,如果路由器没有将该端口列入白名单,则路由器可以拒绝您从服务器你需要进入互联网路由器的NetBIOS(服务器的互联网路由器),然后白名单端口,通常在:

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

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

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