客户端无法从另一个IP连接

问题描述 投票:0回答:1

我编写了一个简单的客户端-服务器应用程序。它在我的电脑上运行得很好。但是当我的朋友尝试连接我的服务器时,他无法连接。我在我的计算机上使用端口 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 的客户端无法连接。

java sockets port client-server
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.