【问题标题】:client can not connect from another ip客户端无法从另一个 ip 连接
【发布时间】:2011-11-11 09:28:31
【问题描述】:

我编写了一个简单的客户端-服务器应用程序。它在我的电脑上运行良好。但是当我的朋友尝试连接我的服务器时,他不能。我在我的计算机上使用端口 23 创建服务器。这是创建服务器的部分:

public Server(int port_number) throws IOException{

        create_Server(port_number);
    }

    public static void main(String[] args) throws IOException {

        int port_number=23;

        new Server(port_number);
    }

    private void create_Server(int port_number) throws IOException{

        ss = new ServerSocket(port_number);

        System.out.println("Server is ready!");

        while(true){

            s=ss.accept();

            System.out.println(s.getLocalAddress().getHostName() + " was connected!");

                        send_con_mes();

            list.put(s,new DataOutputStream(s.getOutputStream()) );

            new ServerThread(s,this).start();
        }

    }

这里是客户端部分;

public void start_Chat() {

    try {

        Ip_addr = JOptionPane.showInputDialog("Enter the IP number of the server to connect : ");
        s = new Socket(Ip_addr, 23);

        Client_name = JOptionPane.showInputDialog("Enter your Nickname : ");

        dis = new DataInputStream(s.getInputStream());         
        dos = new DataOutputStream(s.getOutputStream());
        new Thread(Client.this).start();

好吧,我可以说话,发送私人消息等。当我作为客户端连接到我的计算机上的服务器时,最后的问题是来自另一个 IP 的客户端无法连接。

【问题讨论】:

  • 您是否在路由器/防火墙/两者中为您的端口添加了端口转发?
  • nope_?。我是 java 网络新手。
  • 我不认为这是一个java问题,你的代码似乎是正确的,它看起来更像是一个正常的网络问题。你的朋友在同一个网络上吗?你有窗户吗?在这种情况下,您是否启用了 Windows 防火墙?
  • @KevinDTimm 这是唯一显示连接的套接字线,我的意思是一小部分。我可以分享所有看起来很复杂的代码:)
  • @Simone 不,我的朋友不在我的网络上。是的,我使用的是 Windows 7,但防火墙没有激活_?

标签: java sockets client-server port connect


【解决方案1】:

您必须配置您的网络以允许访问此端口。这意味着在您的 PC 和路由器等上启用防火墙。在 Java 中您无法避免必须先做好此工作。

编辑:如果另一台机器试图通过 Internet 路由器连接到您,他们将不得不使用您的公共 IP 地址而不是您的内部 PC 地址。如果您不知道自己的公共地址,可以使用http://whatismyipaddress.com/ 之类的网站。除非您有静态 IP 地址,否则在重新连接时它可能会更改。 (始终保持联系的一个原因)

【讨论】:

  • 好的,然后我将启用防火墙并尝试执行此端口转发主题。谢谢你的帮助:)
  • “始终保持连接”不一定会阻止更改公共 IP 地址。如果这是可行的,他们可以立即为您提供静态 IP。关键是,没有足够的 IP。
  • AFAIK,您的 ISP 无法在您连接时更改您的 IP 地址,并且不会让您丢失所有连接。他们可以强制您断开连接,并在您重新连接时为您提供不同的 IP 地址。您的 ISP 还可以提供不能公开使用的 ISP 内部使用地址(仅在同一 ISP 内),例如10.x.x.x
猜你喜欢
  • 1970-01-01
  • 2021-06-01
  • 2011-09-19
  • 1970-01-01
  • 2020-07-21
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多