Java套接字连接失败

时间:2015-07-02 16:26:27

标签: java sockets networking network-programming serversocket

我有一个Java服务器代码,我在我的机器上运行,而我的朋友有一个在他的机器上运行的客户端代码。当他输入我的IP以便连接到我的服务器并获取日期时,连接失败并且没有任何反应。请注意,当我在自己的计算机上运行服务器和客户端程序并输入 localhost 作为地址时,连接成功并且我正确地获得了日期消息。我正在寻找导致此问题的可能错误和问题。

Java中的服务器代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(9999);
        try {
            while (true) {
                Socket socket = listener.accept();
                try {
                    PrintWriter out =
                            new PrintWriter(socket.getOutputStream(), true);
                    out.println(new Date().toString());
                } finally {
                    socket.close();
                }
            }
        }
        finally {
            listener.close();
        }
    }
}

Java中的客户端代码:

import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        String serverAddress = JOptionPane.showInputDialog(
                "Enter IP Address of a machine that is\n" +
                        "running the date service on port 9999:");
        Socket s = new Socket(serverAddress, 9999);
        BufferedReader input =
                new BufferedReader(new InputStreamReader(s.getInputStream()));
        String answer = input.readLine();
        JOptionPane.showMessageDialog(null, answer);
        System.exit(0);
    }
}

1 个答案:

答案 0 :(得分:0)

某些路由器可能会隔离不同网络中的计算机。尝试使用Wifi上的两台计算机或两台都连接到路由器。您的IP是否在同一网络上?你能在网络上看到你朋友的电脑吗?您的路由器上可能还有一些安全配置。

除此之外和防火墙问题(已禁用),代码看起来应该可以正常工作。