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

时间:2011-09-06 14:20:00

标签: java sockets client-server port connect

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

1 个答案:

答案 0 :(得分:1)

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

编辑:如果其他计算机试图通过Internet路由器连接到您,则必须使用您的公共IP地址而不是内部PC地址。如果您不知道自己的公共地址,可以使用http://whatismyipaddress.com/这样的网站。除非您有静态IP地址,否则重新连接时可能会更改。 (一直保持联系的一个原因)